Javascript for-in global scope

Javascript for-in global scope

本文关键字:scope global for-in Javascript      更新时间:2023-09-26

我只是有一个尴尬的领悟...

我经常循环遍历这样的对象:

for (item in results) {
  if (results.hasOwnProperty(item)) {
    // do something with results[item];
  }
}

在一个大型应用程序中,我开始在全局命名空间中出现奇怪的泄漏。我从没想过上面的item会漂浮到全局命名空间中,因为它从未被声明过。我猜是这样吗?

正确的语法如下吗?

for (var item in results) {
  if (results.hasOwnProperty(item)) {
    // do something with results[item];
  }
}

出于某种原因,我似乎在示例中错过了这一点。

编辑

否则,我

非常坚定地声明我的所有变量,并且不允许任何内容进入全局命名空间。出于某种原因,我想...循环是一些特殊的例外,但我越想,这个结论似乎就越愚蠢。

是的;你需要声明你的变量。

如果添加'use strict';(所有新代码都应添加(,则在忘记添加时会出现错误。

是的,使用 JSLint 或 JSHint 静态分析您的 JavaScript 代码以查找其他可能的问题。