如果在Javascript中声明没有New的数组会发生什么?

时间:2011-08-01 00:33:41

标签: javascript

  

可能重复:
  What's the difference between Array(1) and new Array(1) in JavaScript?

在javascript中,这两者有何不同?

var arr = Array();  
var arr2 = new Array();

如果根据JS标准它们是相同的,是否有任何浏览器以不同的方式对待这两种方式?

2 个答案:

答案 0 :(得分:15)

根据ECMA-262 edition 5.1

  

15.4.1作为函数调用的数组构造函数

     

Array作为函数而不是构造函数调用时,    它创建并初始化一个新的Array对象。    因此,函数调用Array(...)等同于对象创建    表达式new Array(...)具有相同的参数。

11.1.4 部分(它很长,所以我不会引用它)也表明数组文字直接对应于new Array(...)构造函数调用。

答案 1 :(得分:2)

我认为第二个只是正确的编码惯例,但是Jared有一个很好的观点,即大多数人只使用var arr = [];

以下是您的问题的基准:http://jsperf.com/array-vs-new-array

经过10次跑步,他们的颈部和颈部每秒平均有65-80万次操作。我发现两者之间没有任何性能差异。

话虽如此,我将var arr = [];添加到基准测试中,并且它始终比其他两个快20-30%,每秒超过1.2亿次操作。