JavaScript, помимо всего прочего, странный ... и, возможно, одна из самых странных вещей - это подъем.
При использовании var
переменные можно использовать до их объявления. Ну, я знаю, это звучит очень странно для любого, кто программировал на любом языке программирования, кроме JavaScript. Что происходит, так это то, что все объявления, сделанные с использованием var
, «поднимаются» или помещаются в верхнюю часть текущей области видимости.
So,
x = 5; console.log(x); var x;
дает тот же результат, что и,
var x; x = 5; console.log(x);
В первом примере мы не получаем ошибку или undefined
в качестве вывода, потому что var x
поднят вверх и, таким образом, для движка JS он так же хорош, как заявлено.
Инициализации не поднимаются!
Подъем работает только для объявлений, но не для инициализаций. Так,
console.log(y); var y = 13;
Приведенный выше код выдаст undefined
в качестве вывода, так как это то же самое, что и запись,
var y; console.log(y); y = 13;
Обратите внимание на то, как поднимается объявление var y
, но не y = 13
, поскольку поднимаются только объявления!
Избегание подъема
Подъем, каким бы увлекательным он ни был, может привести к ошибкам, так как его довольно легко не заметить.
- Используйте строгий режим JavaScript, используя директиву
"use strict"
вверху; В строгом режиме JavaScript не разрешены необъявленные переменные. - Используйте более новые методы определения. Подъем не происходит с
let
илиconst
, их использование увеличит шансы того, что ваш код будет свободным от ошибок (значительно). - Объявите все переменные вверху !!
Пожалуйста, хлопайте в ладоши 👏 если вам нравится содержание, ваша поддержка меня поддерживает. ❤❤