我的示例代码:
var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
alert(foo);
为什么警报1?我期待10。 但是如果我在返回后注释掉函数foo(){},它会返回10。
答案 0 :(得分:3)
其他函数中的函数声明被视为它们出现在contains函数的最开头。也就是说,您的bar()
函数被视为如下所示:
function bar() {
function foo() {}
foo = 10;
return;
}
因此foo
是函数中的本地符号,对其的赋值不会影响全局foo
。