var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
console.log(foo);
我不明白为什么这段代码会输出1
答案 0 :(得分:11)
在功能栏的内部,你定义了一个函数foo
,它将在你的函数内部被定义,这意味着你的函数体非常像:
function bar() {
function foo() {}
foo = 10;
return;
}
此功能的范围在条形体内部,因此它与
非常相似function bar() {
var foo = function foo() {};
foo = 10;
return;
}
这意味着,当您修改foo
时,您并未修改全局变量,而只修改bar
内的范围。
答案 1 :(得分:6)
功能声明:
var
)
所以function foo
在foo
用数字覆盖它之前创建一个局部变量foo = 10
。
由于变量是本地变量,因此函数内部没有任何内容接触全局变量,该变量也称为foo
,因此在第1行设置为1
并且永远不会更改。