javascript - 警报阵列时未识别

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

最佳答案

var savey = [];

这是一个空数组。

alert(savey[endhole])

无论 endhole 是什么,它的计算结果都是 undefined,因为 savey.length0

savey.push(worldgeny);

这实际上是将元素添加到savey。在您这样做之前,每次您尝试引用该数组的元素时,它都会返回 undefined

此外,确保 endhole 是一个有效的索引。如果savey的长度为N,确保endhole0N-1<之间.

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

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

关于javascript - 警报阵列时未识别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21864073/

相关文章:

php - Laravel 如何自动获取数组 id

javascript - 检查任何给定字符串是否是有效日期

jquery - 将自动调整宽度表显示为弹出窗口

c++ - 将存储在 Void 指针处的 Int 数组复制到 Int 数组

html - 兄弟按钮收缩和增长

javascript - 检测是否在子窗口中进行了点击

javascript - 从关联数组中删除值

javascript - 组合两个更改功能

javascript - NodeJS 最佳实践 : Errors for flow control?

javascript - 如何避免JS中wav文件播放延迟