Этот блог изначально опубликован на сайте моего блога, где вы можете найти полную версию с подробными сведениями и примерами. Нажмите на ссылку ниже, чтобы прочитать статью полностью и узнать больше о технологиях!
👉 Нажмите здесь
Временная мертвая зона в JavaScript — это область блока, в которой переменная недоступна до тех пор, пока компьютер полностью не инициализирует ее значением.
- Блок – это пара фигурных скобок (
{...}
), которые используются для группировки нескольких операторов. - Инициализация происходит, когда вы присваиваете начальное значение переменной.
Временная мертвая зона – это период времени, в течение которого нельзя получить доступ к объявлениям let
и const
.
Пример:
Прежде чем углубиться в эту концепцию, я бы порекомендовал вам узнать о Подъеме в JavaScript.
let и const имеют два существенных отличия от var:
- Они имеют блочную область видимости.
- При доступе к
var
до его объявления результат не определен; доступ кlet or const
до того, как он объявлен, вызываетReferenceError:
Где именно начинается и заканчивается ТДЗ?
В приведенном выше примере показано, что переменные let
и const
недоступны до тех пор, пока они не будут инициализированы некоторым значением, а фаза между началом выполнения блока, в котором объявлена переменная let
или const
, до инициализации этой переменной называется Temporal. Мертвая зона для переменной.
Другими словами, временная мертвая зона блока начинается в начале локальной области блока. Он заканчивается, когда компьютер полностью инициализирует вашу переменную значением.
И в этой зоне JavaScript всегда будет вызывать ошибку ссылки, если кто-то попытается получить доступ к этим переменным.
Пример:
Вышеприведенный результат кода: JavaScript вернет ReferenceError
, потому что мы использовали код console.log() для доступа к age
до его полной инициализации. Другими словами, мы вызвали age
в пределах временной мертвой зоны.
Начало и конец TDZ. В приведенном выше примере Temporal Dead Zone начинается после открывающей скобки функции printAge и продолжается до объявления переменной age.
Временная мертвая зона связана не с тем, где, а с тем, когда осуществляется доступ к let
переменной или const
константе. Временная мертвая зона относится ко времени, а не к пространству над объявлением let или const.
В приведенном выше примере перед вызовом log() константа возраста объявляется и инициализируется, поэтому она доступна в функции журнала.
Заключение:
Самый эффективный способ преодолеть ошибки временной мертвой зоны – это инициализировать переменные в верхней части области видимости, чтобы при запуске кода он сначала завершал инициализирующую часть, а затем использовал эти переменные. в противном случае вы можете столкнуться с множеством неожиданных ошибок в коде JavaScript.
Изучение новых концепций в JavaScript и обмен ими с другими — моя страсть, и мне доставляет удовольствие помогать и вдохновлять людей. Если у вас есть какие-либо вопросы, не стесняйтесь обращаться!
Присоединяйтесь ко мне в Twitter, Linkedin, GitHub и Dev Community!