这是一个简单的片段,我只是不明白的东西.
下面的代码输出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?我想,它会警告1,我只是将之前声明的变量分配给新的变量.
<script> var foo = 1; function bar(){ if (!foo) { var foo = foo; } alert(foo); } bar(); </script>