我在一段 JavaScript 逻辑中使用了 for in 循环。 我应该使用 var 关键字吗?
当我按照 W3School 的例子运行一个 for-in 循环时,没有 var 然后,作为副作用,它被定义为全局范围(窗口)上的一个属性:
(function () {
var object = {
a: 1,
b: 2
}
for (varName in object) {
alert(varName + " is" + object[varName])
}
})();
alert(window.varName) //Returns "b" !
//This returns undefined when the for-in is rewritten as for (var varName in object).
编辑:这是上面代码的 fiddle 供您欣赏:http://jsfiddle.net/94uEh/
哪个是正确的首选形式? - 请注意,我希望支持 IE 8 (EcmaScript < 5)
最佳答案
如果您希望值是本地的,您应该始终使用 var
。
不建议对变量使用关键字 object
,您可能会遇到跨浏览器的未定义行为。
此外,您通常应该避免应用任何假定为全局范围的本地内容。
这很糟糕:
for (varName in object) {
alert(varName + " is" + object[varName])
}
这是正确的:
for (var varName in object) {
alert(varName + " is" + object[varName])
}
如果你需要在全局范围内访问这个值,你可能做错了。在全局范围内使用它也是无用的,因为它只是最后一个值,将存在于 varName 中。
关于javascript - 我应该在 for in 构造中使用 var 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21377662/