Javascript JS数组无法读取以计算作为索引的undefined的属性663

Javascript JS数组无法读取以计算作为索引的undefined的属性663,javascript,arrays,undefined,Javascript,Arrays,Undefined,以下是我当前的代码: 在第36行:tempX=x+k-种子分离/2给出了一个错误。如果我将tempX更改为x,k或seedseedseparation/2它会工作 代码摘录: var mapX = 1000, mapY = mapX, seedLess = 3, seedSeparation = 32, //Even number canSeed, tempX, tempY, x, y, seedNum = Math.round(((mapX + mapY) / 2) / seedLess);

以下是我当前的代码:

在第36行:
tempX=x+k-种子分离/2给出了一个错误。如果我将
tempX
更改为
x
k
seedseedseparation/2
它会工作

代码摘录:

var mapX = 1000,
mapY = mapX,
seedLess = 3,
seedSeparation = 32, //Even number
canSeed, tempX, tempY,
x, y, seedNum = Math.round(((mapX + mapY) / 2) / seedLess);

var map = [];

for (i = 0; i <= mapX; i++){
    map[i] = [];
    for (k = 0; k <= mapY; k++){
        map[i][k] = 0;
    }
}
x = Math.floor((Math.random()*mapX)+1);
y = Math.floor((Math.random()*mapY)+1);
for (l = 0; l <= seedSeparation; l++){
    for (k = 0; k <= seedSeparation; k++){
        tempX = x + k - seedSeparation / 2; //Here lies the problem
        tempY = y + l - seedSeparation / 2;
        if(tempX >= 0 || tempY >= 0){
            if(map[tempX][tempY]){
                canSeed = false;
            }
        }
    }
}
var mapX=1000,
mapY=mapX,
无核=3,
seedSeparation=32,//偶数
canSeed,tempX,tempY,
x、 y,seedNum=Math.round((mapX+mapY)/2)/无核;
var-map=[];

对于(i=0;i看小提琴,问题不在你标记的那一行,而是在下面几行:

if(map[tempX][tempY]){
这意味着
map
中没有输入
tempX
中的值,因此
map[tempX]
将给您提供值
undefined
。然后您尝试(实际上)执行
undefined[tempY]
,该操作失败,因为您无法从
undefined
读取属性值

您可以重写它以防止这种可能性:

if(map[tempX] && map[tempX][tempY]){