Qu'est-ce que est un tableau notation littérale en javascript et quand vous devriez l'utiliser?

StackOverflow https://stackoverflow.com/questions/1094723

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?

Était-ce utile?

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 [].

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top