Javascript:变量返回两个值,其中一个未定义。我该如何解决?

时间:2017-09-30 04:57:22

标签: javascript

我正在制作一个涉及小行星的游戏。我有一个看起来像这样的碰撞检测功能:

function collisions(){
  for (j=asteroids.length-1;j>=0;j++){
    //do stuff with asteroids[j]
  }
}

我尝试用小行星进行碰撞数学运算,但是我收到了这个错误:

TypeError: Cannot read property 'x' of undefined

我的主要问题是我写的时候:

console.log(asteroids[j])

它记录了两个值,Asteroid对象和undefined。我想也许它是从其他地方记录未定义的,所以我写道:

console.log("1", asteroids[j], "2")

它返回了Asteroid对象和undefined,前面都是“1”,后面是“2”。小行星[j]是否同时具有两个值?这里发生了什么?我该如何解决?

提前致谢。

2 个答案:

答案 0 :(得分:2)

你需要递减(i--)循环而不是递增(i++)。

for (j=asteroids.length-1;j>=0;j--){
  //do stuff with asteroids[j]
}

答案 1 :(得分:1)

asteroids.length-1开始循环,这是最后一个元素ant,然后递增j++索引。这会在第二次迭代中将您推送到数组之外。因此,你得到第二个undefined。 Javascript不会抛出ArrayIndexOutOfBound之类的错误。它有undefined说明了一切。因此,您尝试访问超出数组范围的内容时会得到undefined