함수 호이스팅
- 함수 선언문 방식과 함수 호이스팅
// 함수 선언문과 함수 호이스팅
add(2, 3); // 5
function add(x , y) {
return x + y;
}
add(3, 4); // 7
위 add함수 호출 부분에서는 add()함수가 정의 되지 않았음에도 호출 하는 것이 가능하다.
이것은 함수 선언문 형태로 정의한 함수의 유효 범위는 코드의 맨 처음부터 시작한다는 것을 알 수 있다. 이것을 함수 호이스팅이라고 부른다.
- 함수 표현식 방식과 함수 호이스팅
// 함수 표현식과 함수 호이스팅
add(2, 3); // Uncaught type error
var add = function (x , y) {
return x + y;
};
add(3, 4); // 7
add()함수는 함수 표현식 형태로 정의되어 호이스팅이 일어나지 않는다. 위 add()를 호출한 시점에서 add()가 정의 되지 않았으므로 에러가 발생한다.
이러한 함수 호이스팅이 발생하는 원인은 자바스크립트의 변수 생성과 초기화의 작업이 분리되어 진행되기 때문이다.
참조 저서 : 송형주, 고현준, 인사이드 자바스크립트, 한빛미디어, 78쪽
반응형
'Javascript' 카테고리의 다른 글
[Javascript] Javascript 프로토타입 (Prototype) (0) | 2017.08.31 |
---|---|
[Javascript] Javascript의 확장 금지, 봉인, 동결 (0) | 2017.08.31 |
[Javascript] Javascript 프로퍼티 서술자 (Getter/Setter) (0) | 2017.08.31 |
[Javascript] Javascript의 실행 컨텍스트와 스코프 (0) | 2017.08.30 |
[Javascript] 함수의 생성 (0) | 2017.08.29 |