我在一段 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).
编辑:这是上面代码的小提琴供您欣赏:http://jsfiddle.net/94uEh/ http://jsfiddle.net/94uEh/
哪一种是正确的、首选的形式? - 请注意,我希望支持 IE 8 (EcmaScript
你应该总是使用var
,如果您希望该值是本地的。
使用关键字object
对于变量,不推荐,您可能会在浏览器中遇到未定义的行为。
此外,您通常应该避免应用任何被认为是全局范围内的本地内容。
这不好:
for (varName in object) {
alert(varName + " is" + object[varName])
}
这是对的:
for (var varName in object) {
alert(varName + " is" + object[varName])
}
如果您需要在全局范围内访问该值,那么您可能做错了。同样,将其放在全局范围内也是无用的,因为它只是存在于 varName 中的最后一个值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)