What happens if you declare an array without New i

2020-07-02 08:01发布

Possible Duplicate:
What's the difference between Array(1) and new Array(1) in JavaScript?

In javascript, how are these two different?

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

If they are the same according to JS standards, are there any browsers that treat both ways differently?

标签: javascript
2条回答
Bombasti
2楼-- · 2020-07-02 08:48

I believe the 2nd is simply proper coding convention, but however Jared has a good point that most people just use var arr = [];

Here's a benchmark for your question: http://jsperf.com/array-vs-new-array

After 10 runs, they're neck and neck averaging 65-80 millions ops per second. I see no performance difference whatsoever between the two.

That being said, I added var arr = []; to the benchmark, and it is consistently 20-30% faster than the other two, clocking in at well over 120 million ops per second.

查看更多
聊天终结者
3楼-- · 2020-07-02 08:52

According to ECMA-262 edition 5.1:

15.4.1 The Array Constructor Called as a Function

When Array is called as a function rather than as a constructor, it creates and initialises a new Array object. Thus the function call Array(...) is equivalent to the object creation expression new Array(...) with the same arguments.

The section 11.1.4 (it is quite long, so I won't quote it) also states that array literal directly corresponds to the new Array(...) constructor call.

查看更多
登录 后发表回答