TDZ는 공간적(위치 관련)이 아니라 시간적(시간 관련)이라는 점을 이해하는 것이 중요하다. 식별자를 사용할 수 없는 범위의 맨 위에 있는 영역이 아니다. 식별자를 사용할 수 없는 기간이다. 코드 2-1의 코드를 실행하자.
코드 2-1 TDZ의 시간적 특성의 예–tdz-is-temporal.js
function temporalExample() {
const f = () => {
console.log(value);
};
let value = 42;
f();
}
temporalExample();
TDZ가 공간에 관한 것이라면 value는 temporalExample의 맨 위의 코드 블록에서 사용될 수 없고, 코드도 작동하지 않아야 한다. 하지만 TDZ는 시간에 관한 것이며 f가 value를 사용하기 전에 선언이 실행되었으므로 문제가 없다. 해당 함수의 마지막 두 줄을 교환하면, 즉 f()를 let value = 42; 위로 옮기면 f가 초기화되기 전에 값을 사용하려고 하기 때문에 실패한다(시도해 보자!).