PassFront
  1. PassFront
  2. База знаний
  3. Основы языка

Что такое Temporal Dead Zone?

Основы языка

Temporal Dead Zone (TDZ, временная мёртвая зона) — это период между началом области видимости и строкой объявления переменной let/const, в котором обращение к ней вызывает ReferenceError.

Как работает

Переменные let/const всплывают (движок знает о них), но не инициализируются до строки объявления. Обращение к ним в этот промежуток — ошибка:

console.log(x); // ReferenceError — TDZ
let x = 5;
console.log(x); // 5 — после объявления ок

TDZ начинается с входа в область видимости и заканчивается на строке объявления.

var против let/const

  • var — всплывает и сразу инициализируется undefined (нет TDZ):
console.log(y); // undefined
var y = 5;
  • let/const — в TDZ до объявления.

Зачем нужна TDZ

  • Ловит баги раннего доступа к переменным (вместо тихого undefined).
  • Делает const осмысленным (нельзя использовать до инициализации).
  • Более предсказуемое поведение, чем у var.

Коротко для собеседования

TDZ — промежуток от начала области видимости до объявления let/const, где обращение к переменной даёт ReferenceError. Переменные всплывают, но не инициализированы. В отличие от var (сразу undefined). TDZ ловит баги раннего доступа.

Другие вопросы раздела