尝试从计算创建数组时,数组长度无效

时间:2015-03-24 21:43:25

标签: javascript arrays node.js

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),

它有效。

你能解释一下为什么会这样吗?

1 个答案:

答案 0 :(得分:1)

  

为什么会发生这种情况

因为当您尝试读取其map属性时尚未构造mapSize对象。因此this.mapSize会为您提供undefined。结果undefined * unedefined生成NaN。并且无法使用NaN长度创建数组。只需new Array(NaN),您就会看到相同的错误。