Javascript 数组意外地填充了 NaN
Javascript Array gets filled with NaN unexpectedly
我目前正在制作一个小型卷轴 canvas 游戏,我正在尝试实现怪物。我为怪物保留了两个数组,一个用于它们的 x 位置,一个用于它们的 y 位置。由于某些意外原因,两个数组都填充了 1152 个元素,其中两个是预定义的,其他都是 "NaN"。
这是程序的 link:
http://codepen.io/kenshin791011/pen/WpxQmg
(函数 monsterMove 是 运行 on key down)
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;
}
}
}
代码笔中 JS 的以下循环正在将元素 0 到 cGrid.length
的 monsterx
数组更新为:
for(var i = 0; i < cGrid.length; i++) {
pGridx[i] += g;
monsterx[i] += 1;
}
鉴于几乎所有这些索引的第一次 monsterx[i]
是 undefined
,而 undefined + 1
是 NaN
,这就是你如何获得一个充满 NaN
- 除了以有效数字开头的前两个元素。
您有一个类似的循环来更新 monstersy
。
(为了将来参考,如果您不确定变量是如何更新的,第一步是搜索该变量的代码。这就是我为找到上述问题所做的全部工作。)
我目前正在制作一个小型卷轴 canvas 游戏,我正在尝试实现怪物。我为怪物保留了两个数组,一个用于它们的 x 位置,一个用于它们的 y 位置。由于某些意外原因,两个数组都填充了 1152 个元素,其中两个是预定义的,其他都是 "NaN"。
这是程序的 link: http://codepen.io/kenshin791011/pen/WpxQmg
(函数 monsterMove 是 运行 on key down)
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;
}
}
}
代码笔中 JS 的以下循环正在将元素 0 到 cGrid.length
的 monsterx
数组更新为:
for(var i = 0; i < cGrid.length; i++) {
pGridx[i] += g;
monsterx[i] += 1;
}
鉴于几乎所有这些索引的第一次 monsterx[i]
是 undefined
,而 undefined + 1
是 NaN
,这就是你如何获得一个充满 NaN
- 除了以有效数字开头的前两个元素。
您有一个类似的循环来更新 monstersy
。
(为了将来参考,如果您不确定变量是如何更新的,第一步是搜索该变量的代码。这就是我为找到上述问题所做的全部工作。)