Qu'est-ce que est un tableau notation littérale en javascript et quand vous devriez l'utiliser?
-
11-09-2019 - |
Question
JSLint me donne cette erreur:
problème à la ligne 11 caractères. 33: Utiliser la matrice de notation littérale []
var myArray = new Array();
Quelle est la notation littérale tableau et pourquoi il veut que je l'utilise à la place?
Il montre ici que new Array();
devrait fonctionner correctement ... est-il quelque chose que je suis absent?
La solution
notation de tableau littéral où vous définissez un nouveau tableau en utilisant les supports juste vides. Dans votre exemple:
var myArray = [];
Il est la « nouvelle » de la définition des tableaux, et je suppose qu'il 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 « [] » tout en déclarant un JavaScript tableau?
Autres conseils
Voir aussi: Quel est le problème avec var x = new Array ();
En plus de l'argument Crockford, je crois qu'il est également dû au fait que d'autres langues ont des structures de données similaires qui se produisent à utiliser 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}
est-il pas propre comment Python est grammaticalement correct Javascript? (Oui, les points-virgules fin manquent, mais ce ne sont pas nécessaires pour Javascript, que ce soit)
Ainsi, en réutilisant des paradigmes communs dans la programmation, nous gagnons tout le monde d'avoir à réapprendre quelque chose qui ne devrait pas avoir à.
En plus de l'argument Crockford, jsPerf dit qu'il est plus rapide. http://jsperf.com/new-vs-literal-array-declaration
Après avoir regardé @ecMode jsperf, je l'ai fait quelques tests supplémentaires.
Lorsque vous utilisez pour ajouter au tableau new Array () est nettement plus rapide sur Chrome:
http://jsperf.com/new-vs-literal-array- déclaration / 2
En utilisant l'index à ajouter est légèrement plus rapide pour [].