Один из моих друзей проходил онлайн-викторину и задал мне вопрос, на который я не смогла ответить.
var global = false;
function test() {
global = true;
return false;
function global() {}
}
console.log(global); // says false (As expected)
test();
console.log(global); // says false (Unexpected: should be true)
Если предположить, что функции поднимаются наверх вместе с переменными var, давайте попробуем это.
var foo = 1;
function bar() {
return foo;
foo = 10;
function foo() {}
var foo = 11;
}
bar();
console.log(foo); //says 1 (But should be 11) Why 1 this time ??
Вот демонстрация JSBin и JSBIN Demo2 для экспериментов.
PS: Если убрать function global() {}
из test()
, то нормально запускается. Может кто-нибудь помочь мне понять, почему это происходит?