的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阵列?

其他提示

参见:有什么问题变种X =新的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说,它的速度更快。 http://jsperf.com/new-vs-literal-array-declaration

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

当使用按键添加到阵列新阵列()是相当快的铬:

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

使用索引添加稍微为[]快。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top