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);