2010-02-04 11 views
6

Eventuali duplicati:
What’s the difference between “Array()” and “[]” while declaring a JavaScript array?Qual è la differenza tra Array() e [] in Javascript e perché dovrei usarne uno rispetto all'altro?

In JavaScript è possibile creare un nuovo array come:

var arr = new Array(); 

o simile:

var arr2 = []; 

Qual è la differenza e perché dovresti fare uno sopra l'altro?

+0

Per quanto ne so, fa la stessa cosa. Usa quello che preferisci. – zneak

+5

Dupe di http://stackoverflow.com/questions/931872/whats-the-difference-between-array-and-while-declaring-a-javascript-arr/1273936#1273936 –

+0

wow, folle che il rivelatore vittima didn' Lo rilevo quando stavo facendo la domanda. Le domande sono quasi identiche ... – cmcculloh

risposta

4

new Array(2) vanta una serie di dimensioni , contenente due undefined s. [2] produce una serie di dimensioni , contenente il numero . new Array IMO non si adatta allo spirito di JavaScript, anche se potrebbe rendere la costruzione di array molto più facilmente individuabile. Questo può o non può essere di alcuna importanza (io uso letterali quasi esclusivamente in JavaScript per tutti i tipi applicabili, e ho creato/mantenuto grandi parti di JavaScript [30-50 KLOC] con successo).

modificare Credo che le ragioni condite javascript programmatori evitare new Array sintassi sono:

  • non si comporta in modo uniforme in tutto il numero di argomenti e tipi ((new Array(X)).length == 1 per qualsiasi Xfinchétypeof(X) != "number"
  • è più prolisso e l'unica cosa che si guadagna è l'irregolarità
+0

Il primo punto è perfetto. Questo è esattamente il tipo di cosa che stavo cercando. Grazie! – cmcculloh

0

Credo che siano identici. Non uso mai la nuova matrice();

+0

D'accordo, due modi per fare la stessa cosa – anthares

+1

ma PERCHÉ non usi la nuova matrice()? So che molti sviluppatori JavaScript "esperti" non lo fanno, ma perché no? – cmcculloh

2

Altro (minore) ragione per usare [] a preferenza di new Array() è che Array potrebbe potenzialmente essere sovrascritti (se non ho mai visto accadere) e [] è garantito il funzionamento.

Array = "something"; 
var a = new Array(); // Fails 
var b = []; // Works 
Problemi correlati