TDZ(Temporal Dead Zone)에 대해

oversleep·2025년 2월 3일
post-thumbnail

TDZ는:

"일시적 접근 불가 구역"이라고 할 수 있음.
let과 const로 선언한 변수가 선언은 됐지만 아직 초기화되지 않은 상태.

예시:
// TDZ 시작
console.log(name);  // ReferenceError
let name = "John"; // TDZ 끝
var와 비교:
// var는 TDZ가 없음
console.log(age);  // undefined (에러가 안 남)
var age = 25;

// let은 TDZ가 있음
console.log(name);  // ReferenceError
let name = "John";
실제 사례로 보면:
function example() {
    // TDZ 시작
    console.log(name);  // ReferenceError
    
    let name = "John";  // TDZ 끝
    console.log(name);  // "John" (정상 작동)
}

이렇게 되는 이유는:

  1. var는 호이스팅될 때 undefined로 초기화됨
  2. let/const는 호이스팅은 되지만 초기화는 실제 코드에 도달할 때까지 안 됨
  3. 초기화 전에 접근하려고 하면 에러가 발생
실무에서는:
// 이렇게 X
console.log(x);
let x = 5;

// 이렇게 O
let x = 5;
console.log(x);

요약:

TDZ는 코드의 안전성을 높여주는 기능이라고 볼 수 있음.
변수를 선언하기 전에 사용하는 실수를 방지함.

profile
궁금한 것, 했던 것, 시행착오 그리고 기억하고 싶은 것들을 기록합니다.

0개의 댓글