[JavaScript] 호이스팅(Hoisting) 이란

[JavaScript] 호이스팅(Hoisting) 이란

호이스팅

var, let, const로 선언한 표현식이나 function 선언문 등을 실행 단계에서 해당 Scope의 맨 위로 옮기는 것을 말한다.

아래와 같이 예를 들어보자.

console.log(name); // undefined var name = 'hello World';

해당 코드는 undefined를 return한다. JavaScript가 호이스팅을 하여 아래와 같이 해석하기 때문이다.

var name = undefined; console.log(name); name = 'hello World';

TDZ (Temporary Dead Zone)

선언은 되어있지만, 초기화가 되지 않아 이를 위한 자리가 메모리에 준비되어 있지 않은 상태

아래와 같이 예를 들어보자.

pi; // ReferenceError const pi = 3.14; pi; // 3.14

const 변수는 선언 및 초기화 전 줄까지 TDZ에 있다.

const 변수는 아래와 같이 선언한 후에 사용해야 한다.

const pi = 3.14; pi; // 3.14

결론

var, let, const는 호이스팅 된다.

var는 왠만하면 쓰지말자.

호이스팅은 변수 선언을 최상단으로 끌어올린다는 뜻이다.

let은 선언과 동시에 TDZ에 들어가 초기화가 필요한 상태가 된다.

const는 선언과 함께 초기화까지 이루어진다.

from http://choitaetae.tistory.com/87 by ccl(A) rewrite - 2021-12-13 02:01:59