더북(TheBook)

2. 호이스팅되지 않습니다.

호이스팅(hoisting)var 키워드로 변수를 선언하고 할당했을 때, 변수 선언을 자바스크립트의 스코프(scope) 맨 위로 올려 실행하는 것을 말합니다. 스코프는 나중에 배우는 개념이므로 우선 다음 코드로 내용만 이해하세요(스코프에 관해서는 10.4.1 스코프에서 자세히 설명하니 미리 보고 와도 됩니다).

console.log(num);
var num = 10;

실행결과

undefined

실행결과를 얼핏 보면 조금 이상합니다. 변수를 선언하고 할당하는 초기화 전에 num이라는 변수를 출력하고 있습니다. 당연히 출력할 때는 num이라는 변수가 선언되지 않았으므로 오류가 발생해야 맞지만, 오류가 아니라 undefined라는 값을 출력합니다. 이 배경에 호이스팅 개념이 있습니다. 실제로는 호이스팅에 의해 다음 코드처럼 작동합니다.

var num; // 선언이 최상위로 올라옴
console.log(num);
num = 10; // 할당은 원래 자리에 있음
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.