Я попытался следующий код:Странное поведение по глобальной и локальной переменной в JavaScript
var a = 5;
function x() {
console.log(a);
}
x();
Он работает, как ожидалось и печатает 5.
Но я изменил код так глобальной переменной а будет перезапись следует:
var a = 5;
function x() {
console.log(a);
var a = 1;
}
x();
Он печатает нестандартно. Это не имеет смысла для меня, так как переписывание должно происходить сразу после console.log (a). Так в чем проблема?
Когда переменная поднимается, ее значение также не поднимается? Например, почему wasnt выражение var a = 1; водрузили. И почему просто var a; – smk
Значение не поднимается, потому что вы устанавливаете его в этой позиции, рассмотрите пример инициализации переменной, которая будет равна содержимому другой переменной, которая не была бы заполнена в начале функции. Установка его на 1 приведет к поломке потока программы. –
Ах. Имеет смысл. Спасибо. – smk