var x = new Array()有什么问题;

时间:2009-05-19 21:38:29

标签: javascript jslint

在JSLint中,它警告

var x = new Array();

(那不是真正的变量名)应该是

var result = [];

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

5 个答案:

答案 0 :(得分:69)

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

Array = function() { };

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

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

答案 1 :(得分:26)

Crockford doesn't like new。因此,JSLint expects you to avoid it在可能的情况下。无需使用new ....

即可创建新的数组对象

答案 2 :(得分:7)

根据您的使用情况以及取决于浏览器或环境的目的,您似乎可以获得不同的性能:

http://jsperf.com/new-array-vs-literal/11([1,.2] vs new array(1,.2))在这种情况下,文字更快。

http://jsperf.com/new-array-vs-literal/7(新阵列(500000)vs []。length(500000))新阵列在chrome v21中的速度更快,在此测试中看起来大约为7%或30%),具体取决于您的操作。 / p>

答案 3 :(得分:5)

这两种形式都没有错,但你通常会在任何可能的地方看到文字 -

var s =''不是更多正确而不是var s = new String()....

答案 4 :(得分:2)

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