什么是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
对于[],使用索引添加会稍快。