Skip to content

TDZ(Temporal Dead Zone)

Title
TDZ(Temporal Dead Zone)
Category
JavaScript
Tags
Aliases
TDZ(Temporal Dead Zone)TDZ일시적 사각 지대
Related
Created
2 years ago
Updated
last year

var 변수의 라이프 사이클

var-lifecycle.png (1016×229) (poiemaweb.com)

  1. 함수가 실행되기 전에 실행 컨텍스트(Execution Context)를 생성하는 과정에서 선언 단계와 초기화 단계가 함께 일어난다.
    • 변수 객체(Variable Object)에 foo 프로퍼티를 undefined로 초기화한다.
  2. 함수가 실행되면서 할당문을 만나면, 할당 단계가 이루어진다.

let, const 변수의 라이프 사이클

let-lifecycle.png (931×337) (poiemaweb.com)

  1. 함수가 실행되기 전에 실행 컨텍스트(Execution Context)를 생성하는 과정에서 선언 단계가 일어난다.
  2. 선언 단계와 초기화 단계 사이에 "일시적 사각지대"가 존재한다.
    • 초기화 단계 이전에 변수를 참조하면 참조에러가 발생한다.
  3. 함수가 실행되면서 변수 선언문을 만나면 초기화 단계가 이루어진다.
  4. 변수 할당문을 만나면 할당 단계가 이루어진다.

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

References

Released under the MIT License.