본문 바로가기

카테고리 없음

TDZ란?

앞서 설명한 hoisting에서 TDZ를 잠깐 언급한 적이 있다.

TDZ(Temporal Dead Zone) 란, 한글로 직역하자면 일시적인 사각지대란 뜻입니다.

이 일시적인 사각지대는 스코프의 시작 지점부터 초기화 시작 지점까지의 구간을 TDZ(Temporal Dead Zone) 라고합니다.

  • let 과 const 로 선언된 변수는 var 와 같이 호이스팅을 거치지만, 초기화 전까지는 TDZ 에 들어간 변수입니다.
  • TDZ 에 들어가 있는 변수를 사용하는 경우, Reference Error 를 만나게 됩니다.

let 키워드로 선언된 변수는 선언단계와 초기화 단계가 분리되어 진행된다. 즉, 스코프에 변수를 등록(선언단계)하지만 초기화단계는 변수 선언문에 도달했을 때(코드를 실행 후 ) 이뤄진다. 초기화 이전에 변수에 접근하려고 하면 참조 에러가 발생한다. 이는 아직 변수가 초기화되지 않았기 때문이다. 즉, 변수를 위한 메모리 공간이 아직 확보되지 않았기 때문이다. 따라서 스코프의 시작 지점부터 초기화 시작 지점까지는 변수를 참조할 수 없다. 스코프의 시작지점부터 초기화 지점까지 구간을 ‘일시적 사각지대(Temporal Dead Zone; TDZ)’라고 부른다.