使用括号表示法,可以初始化具有零个或多个值的数组:
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()
的多参数语法?弗拉纳根意味着可能有一个原因。
答案 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的数组。