Temporal dead zone (TDZ)

Jelkov Ahn·2021년 9월 12일
0

JS/NODE (기본)

목록 보기
6/7
post-thumbnail
  • var로 선언된 변수와 let으로 선언된 변수는 호이스팅에서 다음과 같은 차이가 나타난다.
console.log(hi); //undefined
var hi; 

console.log(hello);  //VM197:1 Uncaught ReferenceError: hello is not defined
    at <anonymous>:1:13
let hello; 
  • 자바스크립트는 let, const를 포함하여 모든 선언(var, let, const, function, function*, class)을 호이스팅한다.

  • let의 변수 생성 3단계

    • 1) 선언 단계(Declaration phase)
      변수를 실행 컨텍스트의 변수 객체(Variable Object)에 등록한다. 이 변수 객체는 스코프가 참조하는 대상이 된다.

    • 2) 초기화 단계(Initialization phase)
      변수 객체(Variable Object)에 등록된 변수를 위한 공간을 메모리에 확보한다. 이 단계에서 변수는 undefined로 초기화된다.

    • 3) 할당 단계(Assignment phase)
      undefined로 초기화된 변수에 실제 값을 할당한다.

  • 결론: 선언과 동시에 초기화가 이루어지는 var와는 다르게 let은 해당 선언문이 실행되기 전까지 초기화 단계가 이루어지지 않는다.

이렇게 let으로 변수 선언 후 실행되기 전 사이의 구간을 Temporal Dead Zone(TDZ)이라고 한다.

참고 :(1) 참고사이트 (2)mdn

profile
끝까지 ... 가면 된다.

0개의 댓글