【问题标题】:Nested Javascript Loops producing strange result嵌套的 Javascript 循环产生奇怪的结果
【发布时间】:2013-03-10 06:33:11
【问题描述】:

所以我试图通过两个“for”循环构建一个数组,一个用于多维数组的每一级。

变量:

var pos = new Array();
var scales = [
  2,   // Background
  0.9, // Slide_1 (farthest back)
  1,   // Slide 2
  1.15 // Slide 3
];

代码如下:

for(j = 0; j < 5; j++) {
  var nextPosition = 0;
  for(var i = 0; i < numZones; i++) {
    alert(j + '' + i);
    pos[j][i] = nextPosition;
    nextPosition = (nextPosition + screenWidth + bufferSize) / scales[j];
  }
}

它会很好地遍历第一层,但是当它滚动到第二层时,Firebug 在pos[j][i] = nextPosition 行抛出一个模糊的错误。它声称

TypeError: can't convert undefined to object

不用说,我很生气和困惑。究竟什么是未定义的?我错过了什么?我alert()在每次传递时都输入了ij 的值,它们对i=0j=1 很好,但是当它到达上述行时,它会抛出错误。

提前致谢。

【问题讨论】:

    标签: javascript arrays variables for-loop nested


    【解决方案1】:

    问题是你从不定义pos[j]。因此,pos[j][i] 就像undefined[i]。试试这个:

    for(j = 0; j < 5; j++) {
        var nextPosition = 0;
        pos[j] = [];                         <== new statement
        for(var i=0; i < numZones; i++) {
            alert(j + '' + i);
            pos[j][i] = nextPosition;
            nextPosition = (nextPosition + screenWidth + bufferSize) / scales[j];
        }
    }
    

    顺便说一句,我建议使用数组字面量初始化 pos

    var pos = [];
    

    而不是new Array()。它被认为更时尚。 :)

    【讨论】:

    • 我从来没有想过这一点。非常感谢你!我知道它只是一台计算机,但我希望 Javascript 调试器能够准确地提到哪个部分是“未定义的”。
    猜你喜欢
    • 1970-01-01
    • 2022-11-22
    • 2011-02-24
    • 1970-01-01
    • 2020-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-28
    相关资源
    最近更新 更多