JSLint me donne cette erreur:
Problème à la ligne 11, caractère 33: utilisez la notation littérale du tableau [].
var myArray = new Array();
Qu'est-ce que la notation littérale d'un tableau et pourquoi veut-il que je l'utilise à la place?
Cela montre ici que new Array();
devrait bien fonctionner ... y a-t-il quelque chose qui me manque?
la notation littérale du tableau est l'endroit où vous définissez un nouveau tableau en utilisant uniquement des crochets vides. Dans votre exemple:
var myArray = [];
C'est la "nouvelle" façon de définir les tableaux, et je suppose que c'est plus court/plus propre.
Les exemples ci-dessous expliquent la différence entre eux:
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
Référence : Quelle est la différence entre "Array ()" et "[]" lors de la déclaration d'un tableau JavaScript?
Voir aussi: Quel est le problème avec var x = new Array ();
Mis à part l'argument de Crockford, je crois qu'il est également dû au fait que d'autres langages ont des structures de données similaires qui utilisent la même syntaxe; par exemple, Python a des listes et des dictionnaires ; voir les exemples suivants:
// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]
// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}
N'est-ce pas bien comment Python est aussi Javascript grammaticalement correct? (Oui, les points-virgules de fin sont manquants, mais ceux-ci ne sont pas requis pour Javascript non plus))
Ainsi, en réutilisant des paradigmes communs dans la programmation, nous évitons à tout le monde d'avoir à réapprendre quelque chose qui ne devrait pas l'être.
Mis à part l'argument de Crockford, jsPerf dit que c'est plus rapide. http://jsperf.com/new-vs-literal-array-declaration
Après avoir regardé @ecMode jsperf, j'ai fait d'autres tests.
Lorsque vous utilisez Push pour ajouter au tableau, le nouveau tableau () est considérablement plus rapide sur Chrome:
http://jsperf.com/new-vs-literal-array-declaration/2
L'utilisation d'index pour ajouter est légèrement plus rapide pour [].