Javascript for循环卡在同一个数字上

Javascript for循环卡在同一个数字上,javascript,Javascript,下面的循环在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.cas

下面的循环在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);
            }
        }
    }
}
cascade组件:功能(项目、fn、范围){
if(fn.call(范围| |此,项)!==false){
如果(项目.项目){
对于(i=0;i
我可以通过使用框架迭代循环来避免这个问题。或者,我有相同的循环,处理的是item.items与item.items.items中的数组的细微差别


你知道为什么会这样吗?在Chrome和Firefox中也是如此。

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

var i;

否则,对于使用全局
i
变量的
cascade组件的所有调用,每个递归调用都会将
i
重置为0。在函数开头添加此行:

var i;

否则,对于
cascadeComponent

的所有调用,每个递归调用都会将
i
重置为0。您是否确定其
项.items.length
项.items.length
。请向我们展示您在项中拥有的内容……是的,这是Ext.js使用的结构。请确保其
item.items.items.length
item.items.length
。请向我们展示您在item中拥有的内容……是的,这是Ext.js使用的结构谢谢!完全错过了。有时候太多地盯着一个问题是没有帮助的,需要一个全新的视角:)谢谢!完全错过了。有时,过多地盯着问题看也无济于事,需要一个全新的视角:)