2010-08-17 11 views

Répondre

15

Oui, dans ce cas, ils sont identiques.

Il y a une différence si vous avez un seul élément, et qu'il est numérique. Cela va créer un tableau avec un seul élément:

var myNumbers = [42]; 

mais cela va créer un tableau avec la longueur 42:

var myNumbers = new Array(42); 
+0

+1. Nice :) ... –

+4

Le deuxième exemple n'aura pas vraiment d'éléments '42', seul' length 'sera '42'. Les propriétés de '0' à' 41' n'existent pas dans l'objet, par exemple: 'new Array (42) .hasOwnProperty ('0'); // false'. – CMS

+0

@CMS: Oui, vous avez raison. Les tableaux en Javascript sont un peu spéciaux de cette façon ... J'ai ajusté la réponse. – Guffa

4

Oui, ce sont les mêmes. Il n'y a pas de forme primitive d'un tableau, car les tableaux en JavaScript sont toujours des objets. La première notation (new Array constructor syntax) a été fortement utilisée dans les débuts de JavaScript où la notation courte, n'était pas bien supportée.

Notez qu'il existe une différence de comportement: si vous passez un argument numérique unique, à new Array, comme new Array(20), elle retourne un nouveau tableau pré-initialisés avec ce nombre d'éléments 0-n - 1, mis à undefined.

+0

et comment est-ce utile? Je fais référence à votre 2e paragraphe – Xsmael

4

Oui, ils sont. Sachez cependant que lorsque vous passez un seul paramètre numérique au constructeur Array, vous spécifiez le length initial du tableau, au lieu de la valeur du premier élément. Par conséquent:

var myCars1 = new Array(10); 

... se comportera différemment du tableau suivant littéral:

var myCars2 = [10]; 

... notez les points suivants:

console.log(myCars1[0]);   // returns undefined 
console.log(myCars1.length);  // returns 10 
console.log(myCars2[0]);   // returns 10 
console.log(myCars2.length);  // returns 1 

C'est une des raisons pour lesquelles il est souvent recommandé de s'en tenir à la notation littérale de tableau: var x = [].

Questions connexes