这是一个简单的代码片段,但有些内容我不是很理解。
下面的代码会输出12,我理解这一点,因为var foo = 12;
替换了之前对变量的声明。
<script>
var foo = 1;
function bar(){
if (!foo) {
var foo = 12;
}
alert(foo);
}
bar();
</script>
在下面的代码中,它会弹出警告1,这意味着在函数内部可以访问在函数外声明的变量。
<script>
var foo = 1;
function bar(){
alert(foo);
}
bar();
</script>
但是,在下面的代码中,为什么会提示 undefined?我以为它将 alert 1,我只是将先前声明的变量分配给新变量。
<script>
var foo = 1;
function bar(){
if (!foo) {
var foo = foo;
}
alert(foo);
}
bar();
</script>
var foo = window.foo;
。 - Reeno(!foo)
,则检查全局变量foo
,但在if
语句内部,您正在尝试使用另一个foo
更改此全局变量的值,在if
语句中未定义。 - Andrew Evt