新的Array语法,多个参数

时间:2015-03-30 13:32:49

标签: javascript

使用括号表示法,可以初始化具有零个或多个值的数组:

var a= [];              //length: 0, no items
var a= [1];             //length: 1, items: 1
var a= [1,2];           //length: 2, items: 1,2

使用new Array(),您可以初始化一个零两个或更多值的数组:

var a= new Array(0);    //length: 0, no items
var a= new Array(1);    //length: 1, items: undefined
var a= new Array(1,2);  //length: 2, items: 1,2

参考多参数语法,在 JavaScript:The Definitive Guide 中,Flanagan写道:

  

使用数组文字几乎总是比这个用法更简单   Array()构造函数。

他没有提供任何多参数语法 更简单的例子,我想不出任何一个。但是,“几乎总是”这些词语暗示可能存在这样的情况。

你能想到吗?

请注意,我了解这些方法之间的区别。我的问题具体是,为什么你会使用new Array()的多参数语法?弗拉纳根意味着可能有一个原因。

3 个答案:

答案 0 :(得分:4)

唯一一次将new Array()任何参数一起使用的是单参数情况,您希望创建一个指定长度的(空)数组。

new Array()具有任意数量的参数(包括零)优先于数组文字时,没有其他情况。

确实应该尽可能地使用数组文字,因为虽然它可以覆盖函数Array()以便它做其他事情(可能是恶意的)但是不可能破坏数组文字语法。

答案 1 :(得分:2)

更简单的说,他可能指的是它更短,更容易编写,更明确,你可能会遇到以下问题:

var test = new Array(1) //Empty array 
var test2 = [1] //not empty

答案 2 :(得分:2)

我不认为他的意思是有些情况下使用多参数语法更简单,但有些情况(我能想到的只有一种情况)使用Array构造函数更简单:创建一个大小为N的数组。