-
Notifications
You must be signed in to change notification settings - Fork 0
12. 함수
DD edited this page Jul 13, 2021
·
2 revisions
일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것
매개 변수(parameter) : 함수 내부로 입력을 전달 받는 변수
인수(argument) : 입력
출력(return value) : 반환값
함수는 정의(function definition)하고 변수는 선언(variable declaration)한다.
-
함수 선언문이 평가되면 식별자가 암묵적으로 생성되고 함수 객체가 할당된다.
-
함수 선언문은 표현식이 아닌 문이다.
자바스크립트 엔진은 코드 문맥에 따라 해석을 달리한다.
{}가 블록문일지, 객체 리터럴 인지는 코드 문맥, 즉 단독으로 존재하는지 할당 연산자의 우변인지와 같은 문맥으로 판단한다.
함수 선언문 / 함수 리터럴로 문맥에 따라 구분한다
함수 이름과 식별자는 다르다. 선언문은 엔진이 암묵적으로 식별자를 생성하는 것이다.
-
둘 다 런타임 이전에 자바스크립트 엔진에 의해 먼저 실행 되어 식별자를 생성한다는 점은 동일하다
-
하지만 변수 호이스팅은 undefined로 초기화되고, 함수 호이스팅은 함수 객체로 초기화된다.
-
함수 표현식도 식별자는 생성되지만 런타임에 할당문을 만났을 때 할당이 이루어지기 때문에 이전에 호출할 수 없다
-
즉 함수 표현식은 변수 호이스팅이 발생한다.
- 생성자 함수로 사용할 수 없음
- 기존 함수와 this 바인딩 방식이 다름
- prototype 프로퍼티가 없음
- arguments 객체를 생성하지 않음