3

我在 javascript 中实现了一种路由算法,但是当我在数组中分配一个负的变量时,我给出了这个错误:无效的数组长度。

var node = new Array()
node[0] = new Array(6,7)
node[1] = new Array(5,-4,8)
node[2] = new Array(-2) //Here, invalid array length

我不知道如何解决这个错误。

4

4 回答 4

11

如果您尝试初始化仅包含负数的数组,请使用文字语法:

var a = [-2];

构造函数的问题Array在于,当仅使用一个参数调用它时,这个数字被用作length新数组的,例如:

var b = new Array(5);
b.length; // 5

我建议您坚持使用文字语法以避免这些歧义。

于 2010-05-19T19:41:46.807 回答
3

不要那样声明数组!

var node = [6, 7];
于 2010-05-19T19:41:48.070 回答
1

这是因为一个整数参数设置了新数组的大小。

于 2010-05-19T19:43:29.767 回答
1

数组构造函数文档显示以下内容

var arr1 = new Array(arrayLength);
var arr2 = new Array(element0, element1, ..., elementN);

所以,如果你只使用一个参数,它会创建一个数组arrayLength;否则,如果您使用多个,它将​​使用这些值填充数组。

但是,正如其他人指出的那样,最好使用文字符号 *

var node = [
    [6, 7], 
    [5, -4 8],
    [-2]
];

* 数组字面量表示法略快于new Array(),但这是一种微优化,在大多数情况下并不是很重要。

于 2010-05-19T19:48:39.230 回答