对于i = 0,下面的循环运行一次,然后无限期地为i = 1进入浏览器崩溃,即我没有增加:
cascadeComponent: function(item, fn, scope) {
if (fn.call(scope || this, item) !== false) {
if (item.items) {
for (i = 0; i < item.items.items.length; i++) {
this.cascadeComponent(item.items.items[i], fn, scope);
}
}
}
}
我可以通过使用框架迭代循环来避免这个问题。或者我有相同的循环工作,在item.items与item.items.items中找到数组的细微差别。
为什么会这样?在Chrome和Firefox中也是如此。
答案 0 :(得分:3)
您正在使用全局i
变量。在函数开头添加此行:
var i;
否则,对于i
的所有调用,每个递归调用都会将cascadeComponent
重置为0.