Что такое временная мёртвая зона (TDZ) в JavaScript
Что такое Temporal Dead Zone (TDZ)?
TDZ (Temporal Dead Zone) — это период времени между началом области видимости переменной (например, блок if
, for
, функция и т. д.) и её фактической инициализацией, в течение которого к переменной нельзя обращаться.
Эта зона возникает при использовании let
или const
.
Простой пример
console.log(x); // ❌ ReferenceError: Cannot access 'x' before initialization
let x = 10;
Хотя переменная x
объявлена, вы получаете ошибку, потому что вы обратились к ней до инициализации — вы находитесь во временной мёртвой зоне.
TDZ применяется к:
let
const
- Параметрам в функциях с деструктуризацией
- Классам, объявленным через
class
Вывод
Тип переменной | Поднимается | Инициализируется | TDZ существует |
---|---|---|---|
var | Да | undefined | Нет |
let | Да | Нет | Да |
const | Да | Нет | Да |
Важно:
TDZ — причина, по которой let
и const
более безопасны, чем var
: вы не можете использовать переменные до их объявления, и это предотвращает ошибки.