Раньше думала, что всплытие происходит на самый верх области видимости переменной. То есть как тут. Так как переменная видна только в функции, то соответственно, объявление будет происходит в самом начале функции.
var foo = 1;
function bar() {
//var foo;
if (!foo) {
var foo = 10;
}
console.log(foo);
}
bar();
Но уже здесь уже почему-то происходит объявление глобальной переменной, а не локальной.
//var a;
function c() {
a = 7;
}
c();
console.log(a);
Почему так работает?
var foo = 10, он и всплывает в начало функции. Во втором случае никакого var нет и его никто никуда не добавляет, и поэтому создаётся глобальная переменная – andreymal Mar 25 '21 at 22:47window.aлибоglobal.aбудут содержать 7. А это глобальные объекты, т.е. будут видны везде. – entithat Mar 25 '21 at 23:05