Введение в подъем

Когда мы используем слово подъемник в английском языке, мы описываем действие по подъему или подтягиванию чего-либо. Мы можем сказать, что на здании поднят флаг или что из реки подняли автомобиль.

Подъем в JavaScript описывает, когда объявления переменных и функций (имя) поднимаются или поднимаются наверх своей локальной области видимости перед выполнением кода. Никакой код физически не перемещается, но именно так компилятор JavaScript читает код. Давайте начнем с рассмотрения основного примера.

console.log(myDog);
var myDog = "Muffin";
//Returns ---> undefined

В приведенном выше примере мы начинаем с использования журнала консоли для переменной, которую мы еще не создали. Затем мы объявляем эту переменную с именем myDog и присваиваем ей строку Muffin. Когда код выполняется (запускается), возвращается undefined.

Подъем — это причина, по которой мы не получаем ошибки при запуске этого кода. Интерпретатор JavaScript разделяет этапы объявления (var myDog) и присваивания (= «Muffin») создания переменной. Часть объявления поднимается наверх текущей области до того, как код будет выполнен, и изначально ему присваивается значение undefined. Это означает, что переменную myDog можно использовать до ее инициализации.

А как насчет let и const?

Мы рассмотрели пример, когда переменная объявляется с помощью var, теперь мы посмотрим, что происходит, когда мы объявляем переменную с помощью let или const. Когда вы объявляете переменную с помощью let или const, переменные на самом деле все еще поднимаются. Однако разница в том, что когда мы используем var, объявлению изначально присваивается значение undefined до тех пор, пока не появится строка, в которой мы определили присвоение. В этот момент переменной присваивается значение, которое мы присвоили.

С помощью let переменной изначально не присваивается никакого значения. Если мы повторим приведенный выше пример, используя let, мы увидим пример этого.

console.log(myDog);
let myDog = "Muffin";
//Returns ---> Uncaught ReferenceError: myDog is not defined
    at <anonymous>:1:13

В приведенном выше примере мы записываем в консоль переменную myDog, а затем объявляем и присваиваем переменной строку Muffin.

На этот раз, когда код запускается, объявление (let myDog) поднимается компилятором на вершину области видимости, но переменная изначально не инициализируется, в отличие от var, когда она изначально инициализировалась с помощью undefined. Когда код выполняется (запускается), журнал консоли происходит до того, как мы присвоили какое-либо значение переменной, поэтому мы получаем справочную ошибку выше. Объявление переменных с помощью const работает точно так же.

Причина этого называется временной мертвой зоной. Временная мертвая зона описывает временное неактивное состояние, в котором нельзя использовать переменные.

Это происходит потому, что JavaScript компилирует код до его выполнения. Если вы были на кассе в супермаркете, вы находитесь в промежуточном состоянии между сбором всех ваших продуктов, для которых у вас, вероятно, есть место дома. Однако вы еще не владеете ими, поэтому вы не можете физически использовать их, пока не завершите этап оформления заказа в супермаркете. Давайте закончим с некоторыми окончательными примерами.

Надеюсь, вам понравилась эта статья. Не стесняйтесь оставлять комментарии, вопросы или отзывы и подписывайтесь на меня, чтобы получать больше контента!