개발자가 되기 위한 꿀팁 및 정보

[기술면접준비] Hoisting과 TDZ

푸른매실 2023. 3. 28. 12:13

Hoisting은 자바스크립트에서 변수 및 함수 선언이 해당 스코프의 상단으로 끌어올려지는 것을 의미합니다. 즉, 변수나 함수가 선언된 위치와 관계없이 스코프의 맨 위로 끌어올려진 것처럼 동작합니다.

예를 들어, 다음과 같은 코드가 있다면:

console.log(x); // undefined
var x = 10;

실제로는 다음과 같이 처리됩니다:

var x;
console.log(x); // undefined
x = 10;

 

 

TDZ (Temporal Dead Zone)는 let, const 키워드를 사용하여 변수를 선언할 때 발생하는 현상입니다. TDZ는 해당 변수가 선언되기 이전의 범위에서 변수에 접근하려고 할 때 발생합니다. TDZ가 적용된 변수는 초기화되기 전까지는 사용할 수 없습니다.

예를 들어, 다음과 같은 코드가 있다면:

console.log(x); // ReferenceError: x is not defined
let x = 10;

TDZ 때문에 변수 x는 아직 초기화되지 않았기 때문에 해당 스코프에서 사용할 수 없으며, 참조할 경우 ReferenceError가 발생합니다.