当我运行它时,它会在 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
。
关于javascript - 警报阵列时未识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864073/