开发者

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

开发者 https://www.devze.com 2023-01-01 22:16 出处:网络
I read at many tutorials that the current best practices to create a new javascript array开发者_C百科 is to use

I read at many tutorials that the current best practices to create a new javascript array开发者_C百科 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;
0

精彩评论

暂无评论...
验证码 换一张
取 消