What is array literal notation in javascript and when should you use it?
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
Matt
Updated on July 05, 2022Comments
-
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 over 12 yearsIt is the "new" way...no pun intended?
-
Evik James almost 12 yearsThanks for the explanation. Great answer!
-
Dattatray Walunj over 10 yearsBut the answer doesn't explain that when we should use literal i.e.[] and when to use new Array();
-
thwd over 9 yearsAlways use the literal
[]
. The reason this is better is that it's safer because someone could potentially overwrite thewindow.Array
constructor but not the literal. -
teuber789 over 4 yearsFor those using TypeScript, the equivalent is
var a: string[] = [];
.