因此,我尝试通过两个“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=0 没问题
和 j=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 - 嵌套 Javascript 循环产生奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15319609/