JavaScript中的“new Array(..)”和“[..]”之间的区别?

时间:2010-08-17 07:12:59

标签: javascript arrays

var myCars=new Array("Saab","Volvo","BMW");

var myCars=["Saab","Volvo","BMW"];

完全相同?

3 个答案:

答案 0 :(得分:23)

是的,对于那种情况,他们是一样的。

如果您只有一个项目,则会有所不同,而且它是数字。这将创建一个包含单个项目的数组:

var myNumbers = [42];

但这将创建一个长度为42的数组:

var myNumbers = new Array(42);

答案 1 :(得分:5)

是的,他们是。但请注意,当您只将一个数字参数传递给Array构造函数时,您将指定数组的初始length,而不是第一个项的值。因此:

var myCars1 = new Array(10);

...的行为与以下数组文字不同:

var myCars2 = [10];

...请注意以下事项:

console.log(myCars1[0]);          // returns undefined
console.log(myCars1.length);      // returns 10
console.log(myCars2[0]);          // returns 10
console.log(myCars2.length);      // returns 1

这就是为什么经常建议坚持使用数组文字表示法的一个原因:var x = []

答案 2 :(得分:4)

是的,它们是一样的。没有原始形式的数组,因为JavaScript中的数组始终是对象。第一种表示法(new Array构造函数语法)在JavaScript的早期被大量使用,后者的短符号得不到很好的支持。

请注意,存在一个行为差异:如果将单个数字参数传递给new Array,如new Array(20),它将返回一个新的数组,该数组预先初始化了0中的元素数量。 1}}到n - 1,设置为undefined