我只是有一个令人尴尬的认识......
我经常循环遍历对象:
for (item in results) {
if (results.hasOwnProperty(item)) {
// do something with results[item];
}
}
在一个大型应用程序中,我开始在全局命名空间中出现奇怪的泄漏。我从来没有怀疑上面的item
浮动到全局命名空间,因为它从未声明过。我想是吗?
正确的语法是否如下?
for (var item in results) {
if (results.hasOwnProperty(item)) {
// do something with results[item];
}
}
由于某些原因,我似乎在例子中错过了这个。
我非常坚定地宣布我的所有变量,并且不要让任何东西进入全局命名空间。出于某种原因,我认为...在循环中是一些特殊的例外,但我想的越多,结论似乎就是笨蛋。