What is array literal notation in javascript and when should you use it?

72,073

Solution 1

array literal notation is where you define a new array using just empty brackets. In your example:

var myArray = [];

It is the "new" way of defining arrays, and I suppose it is shorter/cleaner.

The examples below explain the difference between them:

var a = [],            // these are the same
    b = new Array(),   // a and b are arrays with length 0

    c = ['foo', 'bar'],           // these are the same
    d = new Array('foo', 'bar'),  // c and d are arrays with 2 strings

    // these are different:
    e = [3],             // e.length == 1, e[0] == 3
    f = new Array(3);   // f.length == 3, f[0] == undefined

Reference: What’s the difference between “Array()” and “[]” while declaring a JavaScript array?

Solution 2

See also: What’s wrong with var x = new Array();

Aside from the Crockford argument, I believe it is also due to the fact that other languages have similar data structures that happen to use the same syntax; for example, Python has lists and dictionaries; see the following examples:

// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]

// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}

Isn't it neat how Python is also grammatically correct Javascript? (yes, the ending semi-colons are missing, but those aren't required for Javascript, either)

Thus, by reusing common paradigms in programming, we save everyone from having to relearn something that shouldn't have to.

Solution 3

Aside from the Crockford argument, jsPerf says that it's faster. http://jsperf.com/new-vs-literal-array-declaration

Share:
72,073
Matt
Author by

Matt

Updated on July 05, 2022

Comments

  • Matt
    Matt almost 2 years

    JSLint is giving me this error:

    Problem at line 11 character 33: Use the array literal notation [].

    var myArray = new Array();
    

    What is array literal notation and why does it want me to use it instead?

    It shows here that new Array(); should work fine... is there something I'm missing?

  • arxpoetica
    arxpoetica over 12 years
    It is the "new" way...no pun intended?
  • Evik James
    Evik James almost 12 years
    Thanks for the explanation. Great answer!
  • Dattatray Walunj
    Dattatray Walunj over 10 years
    But the answer doesn't explain that when we should use literal i.e.[] and when to use new Array();
  • thwd
    thwd over 9 years
    Always use the literal []. The reason this is better is that it's safer because someone could potentially overwrite the window.Array constructor but not the literal.
  • teuber789
    teuber789 over 4 years
    For those using TypeScript, the equivalent is var a: string[] = [];.