2013-06-29 36 views
1
for(var key in object){ 
    //process object[key] 
} 

或只是你应该在for-in循环中创建一个var吗?

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

是否有区别?

+0

第二种情况下的密钥可以使用delete关键字删除 – bugwheels94

+1

你是什么意思? –

+0

请参阅本文的最后两行https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Working_with_Objects?redirectlocale=zh-CN&redirectslug=JavaScript%2FGuide%2FWorking_with_Objects – bugwheels94

回答

5

是的,有区别。不管你使用var还是不使用key仍然是一个变量,并且在for完成后它的“生命”不会实际结束,其范围将一直延伸到函数结束。 但是,如果你不使用var - key将是全球性的。

1

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

如果您还没有声明它,那么不会声明它并使用它,就像在第二个示例中一样,它是不好的。它会在全球范围内泄漏,break in strict mode,速度很慢。

1

如果您正在寻找建议,请始终选择var版本,它更安全(因为它的范围最小)并且速度更快(因为解释器无需搜索变量是否已经存在存在于全球范围内)。加上它是recommanded by Google

相关问题