admin管理员组

文章数量:1178539

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?

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?

Share Improve this question edited Dec 17, 2013 at 12:49 Praveen 56.5k35 gold badges136 silver badges165 bronze badges asked May 31, 2010 at 15:10 AlfaTeKAlfaTeK 7,76514 gold badges53 silver badges92 bronze badges
Add a comment  | 

5 Answers 5

Reset to default 13

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;

本文标签: Javascript array best practice to useinstead of new arrayStack Overflow