for(var key in object){
//process object[key]
}
要不就
for(key in object) {
//process object[key]
}
有区别吗?
for(var key in object){
//process object[key]
}
要不就
for(key in object) {
//process object[key]
}
有区别吗?
是的,有区别。无论您是否使用 varkey
仍然是一个变量,并且它的“生命”实际上不会在完成后for
结束,它的范围将一直持续到函数结束。但如果你不使用var
-key
将是全局的。
如果您正在寻找建议,请始终选择var版本,它既更安全(因为它的范围尽可能小)又更快(因为解释器不必搜索变量是否已经存在于整个全局范围中)。另外,它是由 Google 推荐的。
有区别。如果您还没有声明key
,var key
将声明key
。如果你有,这是一个重新声明,并不是一件好事,但这并不重要。
如果您还没有声明它,那么就像在第二个示例中一样,不声明并使用它是不好的。它将全局泄漏,在严格模式下中断,并且速度很慢。