Эй👋, если вы столкнулись с проблемами в понимании концепции временной мертвой зоны в 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. Это сделает вашу программу менее подверженной ошибкам, потому что в большинстве случаев доступ к значению до его объявления редко бывает преднамеренным.