Javascript:错误“无法设置属性”..'未定义”

Javascript: Error "Cannot set property '...' of undefined"

本文关键字:未定义 属性 设置 错误 Javascript      更新时间:2023-09-26

我是Javascript的新手,我正在尝试创建一个地形生成器。在 2D 数组中设置某些值时,此错误,无法设置未定义的属性"4.5",这很奇怪,因为我已经用 0 初始化了数组。这就是给我带来麻烦的原因:

this.terrainArr[y + (size - 1) / 2][x + (size - 1) / 2] = 
(this.terrainArr[y][x] +
 this.terrainArr[y + (size - 1)][x] +
 this.terrainArr[y + (size - 1)][x + (size - 1)] +
 this.terrainArr[y][x + (size - 1)]) / 4 + 
((Math.random() * (delta + 1)) - (delta / 2));

我像这样初始化数组:

this.terrainArr = [];
for(var i = 0; i < this.size; i++) {
    var column = [];
    for(var j = 0; j < this.size; j++) {
        column[j] = 0;
    }
    this.terrainArr[i] = column;
}

我一个接一个地调用函数

this.initArr();
this.calcTerrain(0, 0, this.size, 10);

有人知道发生了什么吗?

如果大小为偶数,则 y + (size - 1)/2 将不是整数。尝试读取数组的非整数索引将返回未定义;尝试在未定义上使用索引表示法将引发错误。

例如:

myArray[2.5][4.5] // this is equivalent to undefined[4.5] which will throw