0

下面的循环为 i=0 运行一次,然后无限期地为 i=1 运行到浏览器崩溃中,即 i 不递增:

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

4

1 回答 1

3

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

var i;

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

于 2013-02-08T05:56:07.897 回答