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

标签 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() 处理 ij 的值,并且它们对 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/

相关文章:

java - 带参数的多个方法java

Javascript 未定义但存在公式

javascript - 如何使用 Vue-Loader/Webpack 路径到外部(动态) Assets

javascript - Dojo/AMD 模块 ID 区分大小写

ios - 如何使用 Alamofire 从数组中获取数据以显示在 Collection Cell 中?

javascript - getJson 键/值参数作为变量语法问题

javascript - 在javascript中访问数组中的对象

java - 二维数组中的 If 语句

python - numpy的转置方法无法将一维行ndarray转换为一列

variables - 我可以将 e.parameter 与全局变量结合使用来检索 Google Apps 脚本中的外部变量吗?