JavaScript Array Constructor Called as a Function
In a previous post I used new Array(4)
to demonstrate generating a sequential list of numbers. It occurred to me that I have never actually typed new Array()
before and have always used array literals instead.
I also wondered what happens if I drop the new
operator as in Array(4)
? Well nothing changes as it turns out that when calling the array constructor as a function a new array object is created for you.
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.
Standard ECMA-262 5.1 Edition / June 2011
[...Array(4).keys()];
// (4) [0, 1, 2, 3]
// is the same as...
[...new Array(4).keys()];
// (4) [0, 1, 2, 3]
I must have known this at some point but it has long been removed from the memory. Worth a quick refresh.