是
var myCars=new Array("Saab","Volvo","BMW");
和
var myCars=["Saab","Volvo","BMW"];
完全相同?
答案 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
。