2010-07-27 4 views
2

Possible en double:
What’s the difference between “Array()” and “[]” while declaring a JavaScript array?quelle est la différence entre ces méthodes de définition de tableaux en javascript?

Quelle est la différence entre ces deux méthodes de définition d'un tableau en javascript?

var arrayList = [] 

et

var arrayListAgain = new Array(); 
+3

Dupliquer? http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr – Anders

+0

On est joli, on est moche. L'un est un tableau littéral, on crée un nouvel objet Array. Ils font à peu près la même chose ... Je n'ai jamais vu une utilisation pour 'new Array (countOfUndefinedElements), même si je suppose qu'il y en aura. – Warty

+0

L'utilisation de l'initialisation littérale '[]' est nettement plus rapide;) –

Répondre

4

L'un est bon et l'autre est mauvais :-)

Non sérieusement, la première est plus courte (moins d'octets envoyés sur le fil) et il n » t avoir des problèmes potentiels étranges. Le second, cependant, fonctionnera bien.

La partie bizarre avec new Array() est la suivante: si vous passez un paramètre numérique au constructeur, cela signifie « initialiser le tableau afin qu'il y ait qu'il ya le nombre donné d'éléments de tableau vide (null), etc. que length est égal au nombre donné. " (Bon, il doit s'agir d'un entier, je pense en fait.) Si vous passez un seul non-nombre, ou deux nombres ou plus, cela signifie, "initialiser le tableau afin que son contenu reflète cette liste d'arguments." Ok maintenant j'ai dit qu'il y avait une partie bizarre, et c'est ceci: si vous utilisez une sorte de framework côté serveur, et que vous voulez créer un tableau de valeurs numériques (valeurs entières), comme disent les clés de bases de données uniques , alors vous pourriez être tenté de le faire:

var keys = new Tableau (< @ favoriteTemplateLanguage.forEach (idList): print (id + ',') @>);

(J'ai inventé cette syntaxe bien sûr.) Que se passe-t-il s'il n'y a qu'un seul "id" dans votre liste de clés côté serveur?

+0

Oui, ne travaillez pas trop les câbles! –

+0

.. alors lequel est bon et lequel est mauvais? On dirait que tu as félicité les deux ... – Hristo

+0

Je plaisantais à propos de la "mauvaise" partie, mais à mon avis la première notation ([]) est préférable car elle est moins originale. – Pointy

1

aucun quoi que ce soit jamais. Les deux créent une nouvelle instance d'un objet Array.

Douglas Crockford dans 'Javascript the good parts' recommande l'ancienne méthode car elle est plus concise.

+0

Crockford déconseille également l'utilisation de '++' et '--' pour une raison obscure ... –

2

Vous pouvez utiliser le second pour définir un tableau d'une longueur prédéfinie, par ex.

var arrayListAgain = new Array(20); 

va créer un tableau avec 20 éléments (indéfinis).

Voir aussi new Array (len).

1

Ce sont les mêmes. Selon http://www.hunlock.com/blogs/Mastering_Javascript_Arrays:

actuel des meilleures pratiques du mot-clé évite "nouveau" sur les primitives Javascript .Si vous voulez créer un new Array il suffit d'utiliser des crochets [] comme cette ... var myArray = [];

Je recommande la lecture de cette page, il contient beaucoup d'informations utiles sur les tableaux et JS en général.

Questions connexes