Skip to main content

Hoisting

함수나 변수, 클래스, 또는 import 구문을 Interpreter가 소스 코드 실행 전, 이들의 선언을 해당 영역(ex. Global, Funtion, Block Scope(ES6+) 등)의 최상단으로 옮기는 과정을 말한다. 따라서, 해당 영역의 시작 부분에서 선언된 것처럼 동작할 수 있다. 가령, var로 선언된 변수가 해당 영역의 최상단으로 옮겨지는 것처럼 말이다.


종류

변수가 할당되기 이전에, ReferenceError 를 발생시키지 않고 해당 변수를 사용할 수 있다. 하지만 그 값은 Hoisting 되지 않기 때문에 항상 undefined 이다.

console.log(foo); // Output: undefined
var foo = 'This is hoisted.';

이는 아래의 코드와 동일하다.

var foo;
console.log(foo); // Output: undefined
foo = 'This is hoisted.';
Related Links