for-loop卡在同一个数字上

时间:2013-02-08 05:52:29

标签: javascript

对于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中也是如此。

1 个答案:

答案 0 :(得分:3)

您正在使用全局i变量。在函数开头添加此行:

var i;

否则,对于i的所有调用,每个递归调用都会将cascadeComponent重置为0.