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


71

JSLint给我这个错误:

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

var myArray = new Array();

什么是数组文字符号?为什么要我改用它?

它显示这里new Array();应该可以正常工作...我缺少什么吗?


1
这类似于但不完全相同:stackoverflow.com/questions/931872/…–
博尔加


1
还应尽可能使用文字,因为Array构造函数(new Array())并不总是正常工作。例如,如果单个值是数字。> new Array(
3,11,8

Answers:


102

数组文字表示法是您仅使用空括号定义新数组的地方。在您的示例中:

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()”和“ []”之间有什么区别?


20
这是“新”方式...没有双关语?
arxpoetica 2012年

3
但是答案并没有解释我们何时应该使用文字ie []以及何时使用new Array();。
Dattatray Walunj

5
始终使用文字[]。这样做更好的原因是它更安全,因为有人可能会覆盖window.Array构造函数,但不能覆盖文字。
2014年

1
对于使用TypeScript的用户,等效项是var a: string[] = [];
teuber789

23

另请参阅:var x = new Array()有什么问题?

除了Crockford的论点,我相信这也是由于其他语言具有类似的数据结构而恰好使用相同的语法的事实。例如,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在语法上也是正确的Java脚本不是很整洁吗?(是的,缺少结尾的分号,但是对于Javascript来说也不是必需的)

因此,通过在编程中重用常见的范式,我们使每个人都不必重新学习不必要的知识。


1
感谢您的解释。好答案!
埃维克·詹姆斯


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.