嵌套的Javascript循环产生奇怪的结果

时间:2013-03-10 06:33:12

标签: javascript arrays variables for-loop nested

所以我试图通过两个“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()i每次传递j的值i=0j=1,但是当它达到上述时 - 提到的行,它会引发错误。

提前致谢。

1 个答案:

答案 0 :(得分:4)

问题是你永远不会定义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()。它被认为更时尚。 :)