var map = {
mapSize: 100, // the size of a side
data: new Array(this.mapSize * this.mapSize),
getIndex: function(x, y) {
return x * this.mapSize + y;
},
getCoords: function(index) {
var x = Math.floor(index/this.mapSize);
return {
x: x,
y: index - (x * this.mapSize)
}
}
};
这段代码为我提供RangeError:无效的数组长度。
但是,如果没有计算,则如下所示:
data: new Array(this.mapSize),
有用。
您能解释一下为什么会这样吗?
最佳答案
为什么会这样
因为在尝试读取其map
属性时,尚未构造mapSize
对象。所以this.mapSize
给您undefined
。结果,undefined * unedefined
生成NaN
。并且无法使用NaN
长度创建数组。仅尝试new Array(NaN)
,您将看到相同的错误。
关于javascript - 尝试通过计算创建数组时数组长度无效,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29243454/