简体   繁体   中英

Javascript array best practice to use [] instead of new array?

I read at many tutorials that the current best practices to create a new javascript array is to use

var arr = [] 

instead of

var arr = new Array()

What's the reasoning behind that?

It might be because the Array object can be overwritten in JavaScript but the array literal notation cannot. See this answer for an example

Also note that doing:

var x = [5];

Is different than doing:

var x = new Array(5);

The former creates an initializes an array with one element with value of 5. The later creates an initializes an array with 5 undefined elements.

It's less typing, which in my book always wins :-)

Once I fixed a weird bug on one of our pages. The page wanted to create a list of numeric database keys as a Javascript array. The keys were always large integers (a high bit was always set as an indicator). The original code looked like:

 var ids = new Array(${the.list});

Well, guess what happened when the list had only one value in it?

 var ids = new Array(200010123);

which means, "create an array and initialize it so that there are 200 million empty entries".

Usually an array literal(var a=[1,2,3] or a=[]) is the way to go.

But once in a while you need an array where the length itself is the defining feature of the array.

var A=Array(n) would (using a literal) need two expressions-

var A=[]; A.length=n;

In any event, you do not need the 'new' operator with the Array constructor, not in the way that you DO need 'new' with a new Date object, say.

To create Array without Length

var arr = [];

To create Array with Length more dynamically

var arr;
( arr = [] ).length = 10;  // 10 is array length

To create Array with Length less dynamically

var arr = [];
arr.length = 10;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM