【问题标题】:Loop causes Firefox to crash循环导致 Firefox 崩溃
【发布时间】:2014-04-12 14:55:59
【问题描述】:

所以看起来这个 javascript 循环有时会导致我的 Firefox 过载和崩溃。我只是不明白为什么。

        //prep genresArray
        var genPrint = ""; //variable initialized to avoid "undefined" in print loop
        var GAL = movieListLocal[i].genresArray;
        for(var i=0; i<2; i++){
            genPrint = genPrint+GAL[i].name+", ";
        }

genresArray 包含许多流派对象,每个对象都有一个 id 和一个名称(例如冒险、恐怖等)。我只是想变成一个连续的字符串。

【问题讨论】:

  • 循环外的i 是什么?是来自另一个循环吗?如果是这样,嵌套循环应该使用j 或其他一些变量。否则外循环会失去它的状态。
  • 您在声明之前就在movieListLocal[i].genresArray 中引用了i

标签: javascript jquery loops firefox crash


【解决方案1】:

看起来这个循环嵌套在另一个同样使用i 的循环中。对于内部循环,您应该使用不同的变量名,例如 j

    var genPrint = ""; 

    // outer loop counter----v
    var GAL = movieListLocal[i].genresArray;

    // -----v--inner loop counter
    for(var j=0; j<2; i++){
        genPrint = genPrint+GAL[j].name+", ";
    }

JS 在使用var 时没有块作用域,所以内部的i 声明会覆盖外部的声明。

它将与 let 声明一起使用,在 ECMAScript 6 中出现,目前在 Firefox 中可用。

for (let i = 0; i < 3; ++i) {
    console.log("foo", i)
    for (let i = 0; i < 3; ++i)
         console.log("bar", i)
}

【讨论】:

  • 谢谢!那行得通。尴尬的是我自己没有看到。我猜是隧道视觉。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
相关资源
最近更新 更多