40

在 JSLint 中,它警告说

var x = new Array();

(这不是一个真正的变量名)应该是

var result = [];

第一种语法有什么问题?该建议背后的原因是什么?

4

5 回答 5

70

使用[]比使用更安全new Array(),因为您实际上可以覆盖ArrayJavaScript 中的值:

Array = function() { };

var x = new Array();
// x is now an Object instead of an Array.

换句话说,[]是明确的。

于 2009-05-19T21:46:52.867 回答
27

克罗克福德不喜欢new。因此,JSLint 希望您尽可能避免它。并且可以在不使用new...的情况下创建一个新的数组对象。

于 2009-05-19T21:47:47.530 回答
7

似乎您可以获得不同的性能,具体取决于您使用的内容以及取决于浏览器或环境的目的:

http://jsperf.com/new-array-vs-literal/11 ( [1,.2] vs new Array(1,.2) ) the literal is way faster in this circumstance.

http://jsperf.com/new-array-vs-literal/7 ( new Array(500000) vs [].length(500000) ) new Array is faster in chrome v21 it seems for this test by about 7% or 30%) depending on what you do.

于 2012-08-09T18:41:46.273 回答
5

任何一种形式都没有错,但是您通常会看到尽可能使用的文字-

var s='' 并不var s=new String()....

于 2009-05-19T22:47:26.613 回答
2

第一种语法本身没有问题。事实上,在w3schools上,它列出new Array()了创建数组的方式。问题是这是“老方法”。“新方式”[]更短,允许您初始化数组中的值,如["foo", "bar"]. 大多数开发人员更喜欢[]new Array()良好的风格方面。

于 2009-05-19T21:50:04.513 回答