1
for(var key in object){
  //process object[key]
}

要不就

for(key in object) {
  //process object[key]
}

有区别吗?

4

3 回答 3

5

是的,有区别。无论您是否使用 varkey仍然是一个变量,并且它的“生命”实际上不会在完成后for结束,它的范围将一直持续到函数结束。但如果你不使用var-key将是全局的。

于 2013-06-29T16:58:43.860 回答
1

如果您正在寻找建议,请始终选择var版本,它既更安全(因为它的范围尽可能小)又更快(因为解释器不必搜索变量是否已经存在于整个全局范围中)。另外,它是由 Google 推荐的

于 2013-06-29T17:11:48.103 回答
1

有区别。如果您还没有声明keyvar key将声明key。如果你有,这是一个重新声明,并不是一件好事,但这并不重要。

如果您还没有声明它,那么就像在第二个示例中一样,不声明并使用它是不好的。它将全局泄漏,在严格模式下中断,并且速度很慢。

于 2013-06-29T16:57:18.520 回答