Мне не хватает понимания, что происходит с необъявленной переменной и где она заканчивается в документе.Например,
var a = 1;
function b() {
a = 10;
return;
function a() {}
}
b();
console.log(a);
с подъемом станет
function b () {
function a() {}
a = 10;
return;
}
var a;
a = 1;
b();
console.log(a); // output 1
a = 10 назначается для функции внутри функции b.Это оставляет a = 1 для присваивания var a объявления.Теперь, если мы закомментируем функцию a, мы получим другой вывод.
function b () {
// function a() {}
a = 10;
return;
}
var a;
a = 1;
b();
console.log(a); // output 10
Итак, теперь a = 10 назначается необъявленной переменной, поэтому она становится глобальной, так как именно это выглядит?Из-за изменяющейся мутации он будет помещен внизу документа, например, так:
function b () {
// function a() {}
return;
}
var a;
a = 1;
b();
a = 10;
console.log(a); // output 10
Это правильно?