警报阵列时无法识别



当我运行它时,每当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.length0

savey.push(worldgeny);

这实际上为savey添加了元素。在执行此操作之前,每次尝试引用该数组的元素时,它都会返回undefined

此外,请确保endhole是有效的索引。如果savey的长度为 N,请确保endhole介于 0N-1 之间。

编辑:看起来真正的罪魁祸首是你分配endhole。首先你说endhole = mul5/30,但mul50,所以现在endhole0。在此之后,您立即递减它,将 endhole 的值保留为-1,这是数组中的无效索引。

我不确定您要实现什么逻辑来解决此问题,但您的索引必须0或更高。引用数组的 -1 索引将始终导致undefined

最新更新