Что такое временная мертвая зона?

Я слышал, что доступ к значениям let и const до их инициализации может вызвать ReferenceError из-за чего-то, называемого временной мертвой зоной.

Что такое временная мертвая зона, как она связана с областью применения и подъемом, и в каких ситуациях она встречается?

Ответы

Ответ 1

let и const имеют две большие отличия от var:

  • Они заблокированы в области.
  • Доступ к var до его объявления имеет результат undefined; доступ к let или const, прежде чем он будет объявлен throws ReferenceError:

console.log(aVar); // undefined
console.log(aLet); // causes ReferenceError: aLet is not defined
var aVar = 1;
let aLet = 2;

Ответ 2

Подъемно:
let, const, var - все это получает поднятый процесс.
(что означает, что они идут вверх и объявляются в верхней части области.)

Инициализация:

  • var go также генерирует начальный процесс и получает начальное значение undefined.
  • в то время как let, const не запускает начальный процесс, поэтому их значения по-прежнему недоступны, хотя они уже объявлены. что помещает их во temporal dead zone

Итак, в скором времени:

процесс подъема: var, let, const
Процесс инициализации: var

Ответ 3

В случае переменных let и const, в основном, временная мертвая зона является зоной

"до того, как ваша переменная объявлена",

то есть, где вы не можете получить доступ к значению этих переменных, он выдаст ошибку.

ех.

let sum = a + 5;        //---------
//some other code       //         | ------>  this is TDZ for variable a
                        //         |
console.log(sum)        //---------
let a = 5;

код выше выдает ошибку

тот же код не выдаст ошибку, когда мы используем var для переменной 'a',

ех.

var sum = a;                            
console.log(sum)     //prints undefined
var a = 5;