Lia*_*ath 0 javascript for-loop
我有一些javascript,如下所示
for (var titleKey in data.d) {
var title = data.d[titleKey];
}
Run Code Online (Sandbox Code Playgroud)
这实际上是从对.NET Web服务的JQuery调用回来的,但我不相信这是相关的.
我的循环正确迭代集合中的每个元素,然后再循环一遍循环.这里的titleKey是'indexof',title是'undefined'.
这发生在我的代码中的两个不同的地方.
是什么造成的?我该怎样预防呢?
提前致谢.
您需要从循环中排除原型的属性.该for ... in结构将循环遍历原型链中的所有内容*,而不仅仅是子对象的属性.
for (var titleKey in data.d) {
if (data.d.hasOwnProperty(titleKey)) {
// own property //
}
else {
// inherited property //
}
}
Run Code Online (Sandbox Code Playgroud)
从控制台日志中可以看出我怀疑你有一个indexof在其原型中实现for Array 的库.
我的建议是使用正确的方法来遍历数组:
for (var index = 0; index < data.d.length; index++) {...}
Run Code Online (Sandbox Code Playgroud)
for in是为了对象,而不是数组.这是一个常见的初学者错误,其中一个人滥用了Array派生自Object的事实.
* 请参阅davidchambers的评论