Javascript数组意外地填充了NaN

时间:2017-03-05 00:24:42

标签: javascript html arrays canvas nan

我目前正在制作一个小型滚动画布游戏,我正在尝试实现怪物。我为怪物保留了两个阵列,一个用于x位置,另一个用于y位置。出于某种意外的原因,两个数组都填充了1152个元素,其中两个是预定义的,其他都是“NaN”。

以下是该计划的链接: http://codepen.io/kenshin791011/pen/WpxQmg

(函数monsterMove在按键运行时运行)

var monsterx = [13, 5],
    monstery = [41, 42];
function monsterMove() {
    for(var i = 0; i < monsterx.length; i++) {
        var z = Math.floor(Math.random() * 4);
        switch(z) {
            case 0:
                monsterx[i] -= 1;
                break;
            case 1:
                monstery[i] -= 1;
                break;
            case 2:
                monsterx[i] += 1;
                break;
            case 3:
                monstery[i] += 1;
                break;
        }
    }
}

1 个答案:

答案 0 :(得分:1)

您的codepen中JS的以下循环正在更新元素0到monsterx的{​​{1}}数组:

cGrid.length

鉴于几乎所有这些索引的第一次for(var i = 0; i < cGrid.length; i++) { pGridx[i] += g; monsterx[i] += 1; } monsterx[i]undefinedundefined + 1,这就是你如何得到一个满{{1}的数组除了以有效数字开头的前两个元素外。

您有一个更新NaN的类似循环。

(为了将来参考,如果你不确定如何更新变量,第一步是搜索该变量的代码。这就是我所做的就是找到上面的问题。)