Javascript 尝试从计算创建数组时,数组长度无效
此代码为我提供了RangeError:数组长度无效。Javascript 尝试从计算创建数组时,数组长度无效,javascript,arrays,node.js,Javascript,Arrays,Node.js,此代码为我提供了RangeError:数组长度无效。 但是,当没有计算时,如下所示: 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(inde
但是,当没有计算时,如下所示:
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)
}
}
};
它起作用了
你能解释一下为什么会这样吗
为什么会这样
因为在您尝试读取其
mapSize
属性时,map
对象尚未构造。因此,this.mapSize
提供了未定义的。因此,undefined*unefined
产生NaN
。无法使用NaN
长度创建和数组。只需尝试新建数组(NaN)
,您将看到相同的错误。此
不是您所想的,但您不需要为数组指定长度,数据:[
此
在数据
属性的上下文中不是对象,但可能是窗口。除了@elclanrs注释,这里还有一篇文章,介绍为什么不需要使用new Array()
谢谢!我已经挣扎了这么多,它是如此简单。我刚刚把这个变量放在对象之前。另外:要解决这个问题,可以在map对象之外声明mapSize,比如:var-mapSize=100,map={mapSize:mapSize,data:[],…}
data: new Array(this.mapSize),