var b = 4;
function f() {
b = 7;
return b;
}
a = f();
console.log(a); //output: 7
console.log(b); //output: 7
В приведенных выше кодах b = 7
делает b автоматически глобальным, изменяя таким образом значение var b
на 7. Но когда вложенная функция b добавляется, как показано ниже, я не понимаю результат вывода:
var b = 4;
function f() {
b = 7;
return b;
function b() {}
}
a = f();
console.log(a); //output: 7
console.log(b); //output: 4
По моему мнению, поскольку функция b поднимается в функции f, ссылка на функцию b сначала создается на объекте активации, и когда мы получаем интерпретатор, получаем b = 7
, мы уже видимимя свойства b существует, поэтому код b = 7
ничего не делает и продолжает работу, поэтому console.log(b)
выводит 4
. Но почему console.log(a)
все еще выводит 7
? b = 7
здесь ничего не должно делать, верно?