for(var key in object){
//process object[key]
}
或只是
for(key in object) {
//process object[key]
}
有区别吗?
答案 0 :(得分:5)
是的,有区别。无论你是否使用var key
仍然是一个变量,它的'生命'实际上不会在for
完成后结束,它的范围将延伸到函数结束。
但是,如果您不使用var
- key
将是全球性的。
答案 1 :(得分:1)
有区别。如果您尚未声明key
,var key
将声明key
。如果你有,那就是重新申报,并不是一件好事,但这并不重要。
如果你还没有声明它,那么就像在你的第二个样本中那样声明并使用它是不好的。它将在全球范围内泄漏break in strict mode,并且速度很慢。
答案 2 :(得分:1)
如果您正在寻找建议,请始终选择 var 版本,它既更安全(因为其范围尽可能最小)又更快(因为解释器不必搜索如果变量已存在于整个全局范围内)。加上recommanded by Google。