2
为什么是下面的代码1而不是10的结果?为什么函数bar()没有改变这个值,即使有一个return语句。什么在函数中创建函数?
var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
alert(foo);
为什么是下面的代码1而不是10的结果?为什么函数bar()没有改变这个值,即使有一个return语句。什么在函数中创建函数?
var foo = 1;
function bar() {
foo = 10;
return;
function foo() {}
}
bar();
alert(foo);
这是因为在编译内bar
在bar
顶部移动foo
函数声明。像这样
var foo = 1;
function bar() {
function foo() {}
foo = 10;
return;
}
bar();
alert(foo);
阅读关于hoisting in JS。 与“VAR提升”部分