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

前端 未结 5 1092
醉话见心
醉话见心 2020-12-31 04:08

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

var arr = [] 

instead of



        
相关标签:
5条回答
  • 2020-12-31 04:21

    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".

    0 讨论(0)
  • 2020-12-31 04:21

    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 讨论(0)
  • 2020-12-31 04:23

    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.

    0 讨论(0)
  • 2020-12-31 04:32

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

    0 讨论(0)
  • 2020-12-31 04:37

    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.

    0 讨论(0)
提交回复
热议问题