Ce qui est littéral de tableau de notation en javascript et quand devriez-vous utiliser?
JSLint me donne cette erreur:
Problème à la ligne 11 de caractère 33: Utiliser le littéral de tableau de notation [].
var myArray = new Array();
Ce qui est littéral de tableau de notation et pourquoi veut-il de moi de l'utiliser à la place?
Il montre ici que new Array();
devrait fonctionner... est-il quelque chose que je suis absent?
- Ceci est similaire, mais pas tout à fait la même chose que: stackoverflow.com/questions/931872/...
- double de Quel est le problème avec var x = new Array();
- Également toujours utiliser le littéral quand vous le pouvez parce que le constructeur Array ( new Array() ) ne fonctionne pas toujours correctement. par exemple, si il est une valeur unique qui est un nombre. > new Array(3, 11, 8) [ 3, 11, 8 ] > new Array(3) [ , , ,] > Tableau(3.1) RangeError: Invalide longueur du tableau
Vous devez vous connecter pour publier un commentaire.
littéral de tableau de notation est l'endroit où vous définissez un nouveau tableau en utilisant simplement des parenthèses vides. Dans votre exemple:
C'est la "nouvelle" manière 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:
[]
. La raison de ce qui est mieux, c'est qu'il est plus sûr parce que quelqu'un pourrait remplacer lewindow.Array
constructeur, mais pas le littéral.Voir aussi: Quel est le problème avec var x = new Array();
En dehors de la Crockford argument, je crois que c'est aussi dû au fait que d'autres langues ont les mêmes structures de données qui utilisent la même syntaxe; par exemple, Python a les listes et les dictionnaires; voir les exemples suivants:
N'est-il pas soigné la façon Python est aussi grammaticalement correcte Javascript? (oui, la fin des points-virgules manquantes, mais ceux-là ne sont pas nécessaires pour le Javascript, soit)
Ainsi, grâce à la réutilisation des paradigmes communs dans la programmation, nous sauver tout le monde d'avoir à réapprendre quelque chose qui ne devrait pas avoir à le faire.
En dehors de la Crockford argument, jsPerf dit que c'est plus rapide. http://jsperf.com/new-vs-literal-array-declaration
Après avoir regardé @ecMode jsperf, j'ai fait quelques tests supplémentaires.
Lors de l'utilisation de pousser à ajouter à l'éventail new Array() est beaucoup plus rapide sur Chrome:
http://jsperf.com/new-vs-literal-array-declaration/2
À l'aide d'index pour ajouter un peu plus rapide pour [].