What happens if you declare an array without New in Javascript? [duplicate]
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?
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 callArray(...)
is equivalent to the object creation expressionnew 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.
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.
精彩评论