繁体   English   中英

我应该在 for in 构造中使用 var 吗?

[英]Should I use var in the for in construct?

我在一段 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/

哪个是正确的首选形式? - 请注意,我希望支持 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 ,否则您正在访问全局变量(并且存在覆盖其他人的其他变量的风险)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM