<分区>
我一直在玩弄一些毫无意义的逻辑和作用域,并注意到一些让我感到困惑的奇怪行为......
var test = 1;
(function(){
console.log(test); //its 1
})();
var test = 1;
(function(){
console.log(test); //its 1
test = 2;
})();
var test = 1;
(function(){
console.log(test); //Uncaught ReferenceError: test is not defined
var test = 2;
})();
在下面的示例中,我希望最后一个函数注销 1,直到在该范围内重新分配测试,但它是未定义的,如果我删除作用域声明并重新分配顶级测试,它然后按预期注销 1。
谁能解释为什么最后一个例子 test
变得未定义?