我有点怀疑javascript解释器的工作原理!特别是我在这里提到的情况。
var a = 5;
function foo(){
debugger
a = 100;
if(false){
var a = 10;
}
a = 1000;
}
foo();
console.log(a);
只需将上面的代码复制并粘贴到浏览器的控制台中,预期的答案是 1000。它返回的是 5。
我已经故意放置了调试器,当它命中调试器时,SCOPE 部分显示变量a在未定义的范围内。因此,对局部变量 a 进行了进一步的分配,它根本不应该被创建,因为它位于 false 块中。
我知道变量的范围不限于{},但仅限于函数。但是这个案例是一个惊喜!
谁能解释一下?