Я столкнулся с странным поведением в javascript. Рассмотрим этот код:Необычное поведение javascript
var foo;
function bar(){
function foo(){};
foo = 10;
return;
}
foo = 1;
bar();
console.log(foo);
Это будет выводить 1. Но если удалить объявление функции Foo в третьей строке, он будет выводить 10. Почему не выход 10, когда объявление функции есть? А что является причиной, если я изменить это определение функции для этого:
foo = function(){};
он будет выводить 10 раз? Я знаю о подъеме объявлений функций, но, похоже, это не ответ.
Когда вы выполняете функцию foo() {} ', это переопределяет имя' foo' внутри текущей области функции и скрыть глобальный. – Hacketo