什么是 javascript 中的数组文字表示法? 什么时候应该使用它?

JSLint 给了我这个错误:

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

var myArray = new Array();

什么是数组字面符号,为什么要我用它来代替?

这里显示 new Array();应该能正常工作... 是不是有什么我不知道的?

76385 次浏览

数组常值表示法是用空括号定义新数组的方法:

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 也不需要这些)

因此,通过在编程中重用通用范例,我们可以避免每个人都必须重新学习一些不应该学习的东西。

除了克罗克福德的论点,jsPerf 还说它更快

在查看了@ecMode jsperf 之后,我做了一些进一步的测试。

在 Chrome 中使用 push 添加数组时,new Array ()的速度要快得多:

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

对于[] ,使用 index 进行添加稍微快一些。