我在JavaScript逻辑中使用for in 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/
哪种是正确的,首选的形式? - 请注意,我希望支持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中。
您应该始终使用var
,否则您将访问全局变量(并且有风险您正在覆盖某人的变量)