2009-07-07 44 views
56

JSLint的是给我这个错误:什么是JavaScript中的数组文字符号以及何时使用它?

Problem at line 11 character 33: Use the array literal notation [].

var myArray = new Array(); 

什么是数组的文字符号和它为什么要我用它代替?

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

+0

这与以下内容类似,但不完全相同:http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr/ – Borgar 2009-07-07 22:41:40

+1

[var x = new Array();]的错误[](http://stackoverflow.com/questions/885156/whats-wrong-with-var-x-new-array) – Bergi 2012-06-27 18:07:15

+0

也总是使用文字当你可以因为Array构造函数(new Array())不总是正常工作。例如如果有一个值是一个数字。 > new Array(3,11,8)[3,11,8]> new Array(3)[,,,]> new Array(3.1)RangeError:无效数组长度 – 2017-12-20 14:59:34

回答

78

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

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 

Reference: What’s the difference between “Array()” and “[]” while declaring a JavaScript array?

20

参见:What’s wrong with var x = new Array();

除了从克罗克福德的说法,我认为这也是由于这样的事实,其他的语言有碰巧使用相同语法的相似数据结构;例如,Python has lists and dictionaries;请参阅以下示例:

// 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来说都不是必需的)

因此,通过在编程中重用常用范例,我们可以节省每个人重新学习不应该有的东西。

相关问题