当我运行它时,它会在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);
答案 0 :(得分:2)
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
。