4
在下面的示例中,JavaScript似乎完全忽略了我的return
语句,并且只是执行代码。返回后执行的JavaScript代码
var x = 1;
(function() {
x = 2;
return;
var x = 3;
})();
console.log(x); // Outputs 1 in both Chrome and FF
肯定的代码应该输出2
?如果我从var x = 3
中删除var
关键字,则会按预期输出2
。这里有一些奇怪的编译器优化工作吗?
我认为'x'在函数内部是不同的。简单的修复就是'window.x = 2' – Madushan
由于@dystroy表示变量声明被提升到函数作用域的顶部。因此,因为你有var x = 3,所以var x get被悬挂在顶端,并使x = 2成为局部变量。如果你只是把x = 3(没有var),那么console.log会输出2 –