TDZ(Temporal Dead Zone)
Title
TDZ(Temporal Dead Zone)
Category
JavaScriptTags
Aliases
TDZ(Temporal Dead Zone)
TDZ
일시적 사각 지대
Related
Created
2 years ago
Updated
last year
var 변수의 라이프 사이클
- 함수가 실행되기 전에 실행 컨텍스트(Execution Context)를 생성하는 과정에서 선언 단계와 초기화 단계가 함께 일어난다.
- 변수 객체(Variable Object)에 foo 프로퍼티를 undefined로 초기화한다.
- 함수가 실행되면서 할당문을 만나면, 할당 단계가 이루어진다.
let, const 변수의 라이프 사이클
- 함수가 실행되기 전에 실행 컨텍스트(Execution Context)를 생성하는 과정에서 선언 단계가 일어난다.
- 선언 단계와 초기화 단계 사이에 "일시적 사각지대"가 존재한다.
- 초기화 단계 이전에 변수를 참조하면 참조에러가 발생한다.
- 함수가 실행되면서 변수 선언문을 만나면 초기화 단계가 이루어진다.
- 변수 할당문을 만나면 할당 단계가 이루어진다.
Example
js
function createTDZ(a = b, b) {
// ReferenceError: Cannot access 'b' before initialization
}
createTDZ(undefined, 1);
function createTDZ(a = b, b) {
// ReferenceError: Cannot access 'b' before initialization
}
createTDZ(undefined, 1);
js
let a = f(); // 1
const b = 2;
function f() {
return b;
} // ReferenceError: b is not defined
let a = f(); // 1
const b = 2;
function f() {
return b;
} // ReferenceError: b is not defined