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.