[英]JavaScript code executing after return
在下面的示例中,JavaScript似乎完全忽略了我的return
语句,只是继续执行代码。
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
。 这里有一些奇怪的编译器优化吗?
不,代码不应该输出2,因为变量声明被提升,所以你的代码相当于
var x = 1;
(function() {
var x;
x = 2; // changes the internal x variable
return;
x = 3; // does nothing because it's not reached
})();
console.log(x); // Outputs the outside x, which is still 1
这条线
x = 2;
只更改影响外部x
的内部x
变量。
非全局变量的范围是声明它的整个函数。 从这个功能的开始到结束。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.