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

标签 javascript var for-in-loop

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

相关文章:

arrays - Swift 数组 var 问题

swift - 自定义ui table view cell swift如何显示大量标签?

JavaScript:使用 var 实现 let-working

javascript - 你如何用 React 更新 div?

javascript - 为什么 for...in 循环中的变量是字符串?

javascript - 使用空主体 for-in 循环将对象属性复制到数组

javascript - UI 中模态对话框的最佳方法

javascript - 如何在map函数中传递对象?

javascript - 关于 YUI 压缩器和 javascript

javascript - 如何从 Ember Power Select 传递数据?