Что такое temporal dead zone (временная мёртвая зона) в JavaScript и как она влияет на переменные?
Этот вопрос проверяет знания о поведении переменных, объявленных с помощью let и const, а также понимание контекста выполнения кода в JavaScript.
Короткий ответ
Temporal dead zone (TDZ) — это период времени от начала области видимости переменной, объявленной с помощью let или const, до момента её инициализации. В TDZ переменные недоступны и попытка к ним обратиться вызовет ошибку. Это помогает избежать непредсказуемого поведения при работе с переменными.
Длинный ответ
Temporal dead zone (временная мёртвая зона) — это концепция, связанная с переменными, объявленными с помощью let и const. В отличие от переменных, объявленных с var, которые автоматически инициализируются значением undefined, переменные с let и const не инициализируются до тех пор, пока выполнение кода не дойдёт до строки, где они объявлены. До этого момента они находятся в TDZ и попытка доступа к ним приведёт к ошибке ReferenceError.
Пример:
console.log(myVar); // undefined
var myVar = 5;
console.log(myLet); // ReferenceError: Cannot access 'myLet' before initialization
let myLet = 10;В этом примере var ведёт себя так, как будто она «поднята» (hoisted) в начало, но переменная myLet недоступна до её фактической инициализации. Это и есть temporal dead zone — участок кода, где переменная объявлена, но ещё не доступна для использования.
TDZ помогает избежать ошибок, когда переменные используются до их инициализации, что делает код более надёжным и предсказуемым.