什么是JavaScript中的数组文字符号,什么时候应该使用它?

JSLint给我这个错误:

第11行的问题33:使用数组文字符号[]。

var myArray = new Array(); 

什么是数组文字符号,为什么它要我使用它呢?

它在这里显示new Array(); 应该可以正常工作…有什么我失踪?

数组文字符号是使用空括号定义新数组的地方。 在你的例子中:

 var myArray = []; 

这是定义数组的“新”方式,我认为它更短/更清晰。

下面的例子解释了它们之间的区别:

 var a = [], // these are the same b = new Array(), // a and b are arrays with length 0 c = ['foo', 'bar'], // these are the same d = new Array('foo', 'bar'), // c and d are arrays with 2 strings // these are different: e = [3], // e.length == 1, e[0] == 3 f = new Array(3); // f.length == 3, f[0] == undefined 

参考 : 声明JavaScript数组时,“Array()”和“[]”有什么区别?

另请参见: var x = new Array();

除了克罗克福德的观点外,我相信这也是由于其他语言具有类似的数据结构,而这些语言碰巧使用相同的语法; 例如, Python有列表和字典 ; 看下面的例子:

 // this is a Python list a = [66.25, 333, 333, 1, 1234.5] // this is a Python dictionary tel = {'jack': 4098, 'sape': 4139} 

Python是否也是语法正确的Javascript是不是很整洁? (是的,结尾的分号不见了,但是这些对Javascript来说也不是必需的)

因此,通过重用程序devise中的常用范例,我们可以避免每个人重新学习一些不应该有的东西。

除了克罗克福德的论点之外,jsPerf说速度更快。 http://jsperf.com/new-vs-literal-array-declaration

看了@ecMode jsperf后,我做了一些进一步的testing。

当使用push添加到arrays时,新的Array()在Chrome上显着加快:

http://jsperf.com/new-vs-literal-array-declaration/2

对于[],使用索引添加会稍快。