Temporal Dead Zone (TDZ) — это период между входом в область видимости и точкой, где переменная let или const фактически инициализируется. Обращение к переменной в этот промежуток выбрасывает ReferenceError.
Когда JavaScript входит в область видимости, он регистрирует все объявления let и const, но не инициализирует их. Они находятся в «мёртвом» состоянии до тех пор, пока выполнение кода не достигнет строки с их объявлением.
console.log(myVar); // ReferenceError: Cannot access 'myVar' before initialization
let myVar = 10;
varvar поднимаются и инициализируются значением undefined, поэтому их можно использовать до строки объявления без ошибокlet и const поднимаются, но не инициализируются, из-за чего попадают в TDZ вплоть до момента объявленияconsole.log(myVar); // undefined (без ошибки)
var myVar = 10;
TDZ обеспечивает более безопасный и предсказуемый код:
TDZ — это механизм защиты, введённый вместе с let и const в ES6. Он устраняет путаницу, возникавшую из-за поднятия переменных var, и помогает писать более чистый и поддерживаемый JavaScript-код.
Temporal Dead Zone начинается, когда входим в область видимости, и заканчивается, когда объявление переменной let или const выполняется во время выполнения кода.
Новый — ещё не проверен сообществом
Вы