提醒阵列时不明

时间:2014-02-18 20:00:26

标签: javascript html arrays

当我运行它时,它会在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);

1 个答案:

答案 0 :(得分:2)

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