【发布时间】:2011-03-30 19:56:34
【问题描述】:
是
var myCars=new Array("Saab","Volvo","BMW");
和
var myCars=["Saab","Volvo","BMW"];
一模一样?
【问题讨论】:
-
你可以在这里得到一些答案。 stackoverflow.com/questions/931872/…
标签: javascript arrays
是
var myCars=new Array("Saab","Volvo","BMW");
和
var myCars=["Saab","Volvo","BMW"];
一模一样?
【问题讨论】:
标签: javascript arrays
是的,它们是一样的。数组没有原始形式,因为 JavaScript 中的数组始终是对象。第一种表示法(new Array 构造函数语法)在 JavaScript 早期被大量使用,后者的短表示法并没有得到很好的支持。
请注意,存在一个行为差异:如果您将单个数字参数传递给 new Array,例如 new Array(20),它将返回一个新数组,该数组使用从 0 到 @987654325 的元素数量预先初始化@,设置为undefined。
【讨论】:
是的,在这种情况下它们是相同的。
如果您只有一个项目,并且它是数字的,则会有所不同。这将创建一个包含单个项目的数组:
var myNumbers = [42];
但这会创建一个长度为 42 的数组:
var myNumbers = new Array(42);
【讨论】:
42 项目,只有它的length 将是42。对象中不存在从0 到41 的属性,例如:new Array(42).hasOwnProperty('0'); // false。
Array构造函数的使用都会生成一个带有one元素的数组,即内部[1,2,3] 数组,例如new Array([1,2,3]).length == 1。所描述的行为只能通过 Array.apply(null, [1,2,3]); 之类的方式实现
... The following code creates an array of five elements: var billingMethod = new Array(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 = []。
【讨论】: