这样可以吗?
for (var i = 0; i < 10; i++) {
...
}
doSomething(i);
显然,我希望i
在这里的值为10。我的测试表明,这是可以的,但这是定义的行为吗?(ES5)
发布于 2015-11-12 21:44:44
是的,这是定义的行为。当前版本的JavaScript没有块作用域,只有函数作用域。
然而,JavaScript (ES6)的新标准正在引入一种let
语句(var
的替代方法),它将尊重块范围。
在下面的代码中,您将无法在循环之外访问i
:
for (let i = 0; i < 10; i++) {
...
}
https://stackoverflow.com/questions/33686612
复制相似问题