当我运行此命令时,无论何时worldgeny == 400
我都不知道为什么会发出警报。
如果我在同一位置提醒worldgeny
,则会提醒NaN
。我可能还没有很好地解释这一点。如果您感到困惑,请问。
我的代码很乱,我知道这只是对我个人的测试
提前致谢
var addy;
var worldgeny = parseInt(200);
var mul5 = parseInt(0);
var endhole;
var holegen;
var sizeh = 30;
var sizew = 30;
var savey = [];
function cworld() {
mul5++;
posX++;
canvasContext.drawImage(imageGround, posX, worldgeny, 1, 400);
if(mul5 % 30 == 0){
if(worldgeny==400){
endhole = mul5/30;
endhole = endhole - 1;
worldgeny=savey[endhole];
alert(savey[endhole])
}
addy = parseInt(Math.floor((Math.random()*30)-17));
holegen = parseInt(Math.floor((Math.random()*5)));
worldgeny += addy;
if(holegen==1){
worldgeny = 400;
}
savey.push(worldgeny);
}
}
setInterval(cworld, 1);
最佳答案
var savey = [];
这是一个空数组。
alert(savey[endhole])
不管
endhole
是什么,由于undefined
是savey.length
,所以它的计算结果是0
。savey.push(worldgeny);
这实际上将元素添加到
savey
。在执行此操作之前,每次尝试引用该数组的元素时,它将返回undefined
。此外,请确保
endhole
是有效索引。如果savey
的长度为N
,请确保endhole
在0
和N-1
之间。编辑:看起来真正的罪魁祸首是您分配的
endhole
。首先,您说endhole = mul5/30
,但是mul5
是0
,所以现在endhole
是0
。之后,您将其递减,将endhole
的值保留为-1
,这是数组中的无效索引。我不确定要解决此问题的逻辑,但是您的索引必须为
0
或更大。引用数组的索引-1
将始终导致undefined
。