以下のループは、i=0 に対して 1 回実行され、次に 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 でも同じです。