본문 바로가기

카테고리 없음

[모던 자바스크립트 Deep Dive] 함수선언부 함수표현식 호이스팅

sub 변수에 함수리터럴  할당 이전에 변수를 참조하면 변수 호이스팅에 의해 undefined로 평가된다. 즉 함수 표현식은 함수 호이스팅이 발생하는게 아니라 변수 호이스팅이 발생하는 것  
 
함수리터럴이 할당되는 시점부터 함수객체로 되어 변수호이스팅이 아닌 함수 호이스팅으로 평가한다.

console.dir(add); // f add(x,y)
console.dir(sub);  // undefined

console.log(add(2,5)); // 7 
console.log(sub(2,5)); // TypeError: sub is not function

// 함수 선언문 
function add(x,y){
    return x+y;
}

// 함수 표현식 - 함수호이스팅x 변수호이스팅o 
// 함수표현식 할당전이라 함수호이스팅이 아닌 변수 호이스팅으로 평가한다.
var sub = function (x,y) {
    return x-y;
};