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

Javascript:一个变量返回两个值,其中一个未定义。我该如何解决这个问题?,javascript,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

我正在做一个关于小行星的游戏。我有一个碰撞检测功能,看起来像这样:

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])
它记录了两个值,小行星对象和未定义。我想可能是其他地方没有定义日志,所以我写道:

console.log("1", asteroids[j], "2")
它返回了小行星和未定义的物体,前后都有一个“1”和一个“2”。小行星[j]是否同时具有这两个值?这里发生了什么?我该如何解决这个问题

提前感谢。

您需要减少(
i--
)循环,而不是增加(
i++

您需要减少(
i--
)循环,而不是增加(
i++


以小行星开始循环。length-1是最后一个元素,然后递增
j++
索引。这会在第二次迭代中将您推到数组之外。因此,第二个值为
未定义
。Javascript不会抛出类似于
ArrayIndexOutOfBound
的错误。它有
未定义的
,这说明了一切。因此,如果试图访问数组边界以外的内容,则会得到一个
未定义的

使用
小行星开始循环。length-1
是ant的最后一个元素,然后递增
j++
索引。这会在第二次迭代中将您推到数组之外。因此,第二个值为
未定义
。Javascript不会抛出类似于
ArrayIndexOutOfBound
的错误。它有
未定义的
,这说明了一切。因此,如果试图访问数组边界以外的内容,您会得到一个
未定义的

可能重复并且可能不应该在for循环中执行
j--
?可能重复并且可能不应该在for循环中执行
j--
?谢谢你,哈哈,我通常是这样做的,它完全把我搞糊涂了。没关系…:)谢谢你,哈哈,我通常是这样的,它完全把我吸引住了。没关系…:)
for (j=asteroids.length-1;j>=0;j--){
  //do stuff with asteroids[j]
}