Javascript 警报阵列时未识别

Javascript 警报阵列时未识别,javascript,html,arrays,Javascript,Html,Arrays,当我运行此程序时,无论何时worldgeny==400它都会提醒unidentified,我不知道为什么。 如果我在同一个地方提醒worldgeny,它会提醒NaN。我可能没有很好地解释这一点。如果你感到困惑,就问吧。 我的代码很乱我知道这只是对我个人的测试 提前谢谢 var addy; var worldgeny = parseInt(200); var mul5 = parseInt(0); var endhole; var holegen; var sizeh = 30; var size

当我运行此程序时,无论何时
worldgeny==400
它都会提醒unidentified,我不知道为什么。 如果我在同一个地方提醒
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);
这是一个空数组

alert(savey[endhole])
无论
endhole
是什么,它的计算结果都是
undefined
,因为
savey.length
0

savey.push(worldgeny);
这实际上会将元素添加到
savey
。在执行此操作之前,每次尝试引用该数组的元素时,它都将返回
未定义的

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

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


我不确定您想要实现什么逻辑来解决这个问题,但您的索引必须是
0
或更大。引用数组的索引
-1
将始终导致
未定义

确认!求你了!我所能告诉你的是,它试图访问一个不存在的数组索引。@tymeJV但索引是定义的我有checkedIt,如果索引是定义的,这并不重要-重要的是
savey
实际上在该索引处包含一个元素。@DesertIvy它会像你在“savey.push(worldgeny);”中看到的那样做代码的一部分,但它总是未定义的,即使在我这样做之后,因为它循环查看我关于
尾洞的编辑
索引。它应该总是在
0
和数组长度减1之间。好的,谢谢你,但是当我提醒'endhole'时,它在数组长度减1之间,所以它仍然不起作用。也许你正在将
未定义的
推入数组中。检查该变量,以防万一。作为提示,如果使用
console.log()
(或任何类似方法)输出变量,您会发现调试更容易。更好的是,使用像Firebug这样的JS调试器,或者Chrome的内置开发工具(都可以通过F12访问)。您将省去点击
警报
对话框的痛苦:请参阅我的编辑。我认为你计算
endhole
索引变量的逻辑是不可靠的。
savey.push(worldgeny);