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]
}
是否有区别?
是的,有区别。不管你使用var还是不使用key
仍然是一个变量,并且在for
完成后它的“生命”不会实际结束,其范围将一直延伸到函数结束。 但是,如果你不使用var
- key
将是全球性的。
有区别。如果您还没有申报key
,var key
将声明key
。如果你有,这是一个重新宣言,并不是一件好事,但它并不重要。
如果您还没有声明它,那么不会声明它并使用它,就像在第二个示例中一样,它是不好的。它会在全球范围内泄漏,break in strict mode,速度很慢。
如果您正在寻找建议,请始终选择var版本,它更安全(因为它的范围最小)并且速度更快(因为解释器无需搜索变量是否已经存在存在于全球范围内)。加上它是recommanded by Google。
第二种情况下的密钥可以使用delete关键字删除 – bugwheels94
你是什么意思? –
请参阅本文的最后两行https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects?redirectlocale=zh-CN&redirectslug=JavaScript%2FGuide%2FWorking_with_Objects – bugwheels94