Javascript for-in全局范围

时间:2014-12-19 18:41:32

标签: javascript object

我只是有一个令人尴尬的认识......

我经常循环遍历对象:

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];
  }
}

由于某些原因,我似乎在例子中错过了这个。

修改

我非常坚定地宣布我的所有变量,并且不要让任何东西进入全局命名空间。出于某种原因,我认为...在循环中是一些特殊的例外,但我想的越多,结论似乎就是笨蛋。

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

是的,并使用JSLintJSHint静态分析您的JavaScript代码,以了解其他可能的问题。