관리 메뉴

Jerry

[JavaScript] TDZ(Temporal Dead Zone)이란? 본문

Front/JavaScript

[JavaScript] TDZ(Temporal Dead Zone)이란?

juicyjerry 2023. 2. 21. 16:01
반응형

let과 const 호이스팅 + TDZ(Temporal Dead Zone)

 

 

let과 const로 선언한 변수도 호이스팅 대상이다.

호이스팅 시 let은 undefined로 변수 초기화 하지 않음

이 상태에서 선언한 let 키워드 호출

 

⇒  예외 발생 (에러) | 에러 발생 이유: 일시적 사각지대(TDZ: Temporal Dead Zone)

 

변수 스코프의 맨 위에서 변수의 초기화 완료 시점까지의 변수는
"일시적 사각지대"(Temporal Dead Zone, TDZ)에 들어간 변수라고 표현
  • TDZ인 이유는 사각지대가 코드의 작성 순서(위치)가 아니라 코드의 실행 순서에 의해 형성되기 때문

 

// TDZ Example 
function do_something() {   
	console.log(bar); // undefined   
    console.log(foo); // ReferenceError   
    var bar = 1;   
    let foo = 2; 
}

 

 

[정리]

let 키워드는 var 키워드와는 다르게 선언 전 실행 컨텍스트 변수 객체에 등록이 되어 호이스팅이 되지만, 이 TDZ 구간에 의해 메모리가 할당되지 않아 참조 에러(ReferenceError)가 발생하는 것

변수 스코프의 맨 위에서 변수의 초기화 완료 시점까지의 변수는 "일시적 사각지대"(Temporal Dead Zone, TDZ)에 들어 간 변수라고 표현

TDZ인 이유는 사각지대가 코드의 작성 순서(위치)가 아니라 코드의 실행 순서에 의해 형성되기 때문

 

 

 

 

 

 

참고하면 도움이 되는 내용
 

[JavaScript] 호이스팅(Hoisting)이란? - 호이스팅이란

Hoisting var 호이스팅 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 var 로 선언한 변수의 경우 호이스팅 시 undefined로 변수 초기화 var 키워드로 선언된 변수는 선언 단계

juicyjerry.tistory.com

 

 

[JavaScript] var, let, const 의 차이점

var 키워드 Scope of var : var 키워드의 범위 범위는 기본적으로 변수를 사용할 수 있는 위치 의미 var 선언은 전역 범위 혹은 함수 범위로 지정 var 변수가 함수 외부 선언 => 범위는 전역 (전체 윈도우

juicyjerry.tistory.com

 

 

 

 

 

반응형