Эй👋, если вы столкнулись с проблемами в понимании концепции временной мертвой зоны в javascript, то вы попали в нужное место.
В этой статье я начну с объяснения вам термина подъем и как это связано с временной мертвой зоной.
Подъем
Итак, что такое подъем? Проще говоря, подъем — это явление в javascript, с помощью которого вы можете получить доступ к переменным, функциям и классам даже до того, как вы их инициализировали.
Давайте разберемся с помощью примера.
В приведенном выше коде нет абсолютно никакой ошибки, потому что за сценой в javascript на этапе выделения памяти внутри контекста выполнения undefined выделяется для всех переменные и все тело функции выделяются функции в паре ключ-значение.
(В приведенном выше коде, если функция foo является выражением функции, то она будет действовать как переменная.)
Undefined — это специальный литерал в javascript, и он не равен пустому значению. . Он занимает свою собственную память, он действует как заполнитель, который сохраняется до тех пор, пока переменная не будет инициализирована некоторым значением.
Но проблема в том, что подъем var может привести к неожиданным ошибкам, и отладка этих ошибок в большой программе может оказаться утомительной задачей для разработчиков.
Временная мертвая зона
С появлением ES6+ в мире JavaScript ключевые слова let и const были введены как его часть.
Ключевые слова Let и const также используются для создания переменных в javascript, таких как var, но разница заключается в том, как они поднимаются. Объявления let и const также поднимаются, но они поднимаются совершенно иначе, чем объявления var. Они переносятся в отдельный блок памяти, которого нет в глобальной области видимости. Они находятся во временной мертвой зоне (TDZ).
Временная мертвая зона – это время, прошедшее с момента, когда эта переменная let и const была поднята, и до тех пор, пока она не инициализировала какое-либо значение.
В приведенном выше примере мы использовали let, поэтому строка номер 3 остановит дальнейшее выполнение нашей программы. Потому что переменная l находится в TDZ и не может быть доступна до инициализации.
Заключение
Временная мертвая зона — это период между началом выполнения блока, в котором объявляется переменная let или const, до инициализации этой переменной.
Итак, чтобы избежать временной мертвой зоны, попробуйте объявить все переменные в верхней части вашего кода, что считается лучшей практикой в Javascript. Это сделает вашу программу менее подверженной ошибкам, потому что в большинстве случаев доступ к значению до его объявления редко бывает преднамеренным.