Skip to content

12. 함수

DD edited this page Jul 13, 2021 · 2 revisions

함수

일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것

매개 변수(parameter) : 함수 내부로 입력을 전달 받는 변수

인수(argument) : 입력

출력(return value) : 반환값

함수는 정의(function definition)하고 변수는 선언(variable declaration)한다.

  • 함수 선언문이 평가되면 식별자가 암묵적으로 생성되고 함수 객체가 할당된다.

  • 함수 선언문은 표현식이 아닌 문이다.

문맥

자바스크립트 엔진은 코드 문맥에 따라 해석을 달리한다.

{}가 블록문일지, 객체 리터럴 인지는 코드 문맥, 즉 단독으로 존재하는지 할당 연산자의 우변인지와 같은 문맥으로 판단한다.

함수 선언문 / 함수 리터럴로 문맥에 따라 구분한다

함수 이름식별자는 다르다. 선언문은 엔진이 암묵적으로 식별자를 생성하는 것이다.

변수 호이스팅 vs 함수 호이스팅

  • 둘 다 런타임 이전에 자바스크립트 엔진에 의해 먼저 실행 되어 식별자를 생성한다는 점은 동일하다

  • 하지만 변수 호이스팅은 undefined로 초기화되고, 함수 호이스팅은 함수 객체로 초기화된다.

  • 함수 표현식도 식별자는 생성되지만 런타임에 할당문을 만났을 때 할당이 이루어지기 때문에 이전에 호출할 수 없다

  • 즉 함수 표현식은 변수 호이스팅이 발생한다.

() => 화살표 함수

  • 생성자 함수로 사용할 수 없음
  • 기존 함수와 this 바인딩 방식이 다름
  • prototype 프로퍼티가 없음
  • arguments 객체를 생성하지 않음