Written by
java-style
on
on
[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