2010-08-02 12 views
6

è meglio scrivereÈ meglio scrivere: var arr = []; di var arr = new Array() ;?

var arr=[]; then var arr=new Array(); 
var obj={}; then var obj=new Object(); 

e, se sì, perché?

Ho letto slide lection page 36 riguardo a questa idea, ma non è stata fornita alcuna spiegazione o esempio perché è meglio.

+1

Bella domanda! Secondo me, dal punto di vista della bellezza del codice, 'new Array()' sembra molto più pulito. Interessato a vedere cosa viene fuori. –

+0

Il dupe proposto non menziona oggetti. –

risposta

6

Non c'è una grande differenza tra queste definizioni, tranne il fatto che il primo modo usa il letterale array/object e il secondo il costruttore di array/oggetto.

Il costruttore di array può restituire risultati diversi, a seconda del numero di argomenti passati. Se si passa in un argomento, viene creata una nuova matrice vuota della lunghezza di tale argomento. Ad esempio:

// arr1 is the same as arr2 
var arr1 = new Array(1, 2, 3, 4); 
var arr2 = [1, 2, 3, 4]; 

alert(arr1.length == arr2.length); // true 
alert(arr1[0]); // 1 
alert(arr2[0]); // 1 

Ma, passando in uno risulta diverso argomento:

// arr3 has length 200 and is empty, while arr4 has length 1 and contains a number 
var arr3 = new Array(200); 
var arr4 = [200]; 

alert(arr3.length == arr4.length); // false 
alert(arr3[0]); // 'undefined' 
alert(arr4[0]); // 200 

Il modo più rapido per definire una matrice o un oggetto è naturalmente il modo letterale, perché non si fa è necessario chiamare prima il costruttore. In ogni caso, la differenza di velocità effettiva è trascurabile, davvero.

ho fatto un speed test in Chrome 6, in cui ho definito 20 volte 10000000 dello stesso array 1, 2, 3, che ha dato questi risultati:

Average speed per 10000000 calls 
Array Constructor : 226.55 ms 
Array Literal  : 159.1 ms 

Come si può vedere, l'array letterale è più veloce per 67,45ms 10000000 definizioni di array.

+0

la domanda anche qui più veloce per il computer per eseguire – Yosef

+0

mentre è un punto interessante che il costruttore 'Array' tratta gli argomenti in modo diverso in base a quanti ce ne sono, penso che sia completamente fuorviante elencarlo come differenza in un confronto tra i due modi di creare un array. '[]' non è un metodo invocato con argomenti, più di 'var a =" test "' sono passati quattro argomenti a una funzione '' "' '. non è altro che una sintassi per la creazione di array, che riguarda solo implicitamente l'assegnazione di dimensioni. –

+3

http://jsperf.com/literal-vs-constructor-array – James

1

thomas fuchs dice nel suo slideshow, sotto quel video (la parte che dice "abbracciare la lingua" a pagina 20): var arr = [] e var obj = {} è migliore e leggermente più veloce. Non sono sicuro del perché, ma comunque, è una presentazione piuttosto interessante :)

1

Da una prospettiva tipica del programmatore, sembra che tendiate a usare var arr = new Array(); in modo da dare la sensazione di istanziazione tipica dell'oggetto. Ma in javascript di solito è buona pratica usare var arr = []; Personalmente non vedo molta differenza nell'usare entrambi i modi ad eccezione di un parametro che è spiegato da Harmen.

controllare questo link troppo - http://yuiblog.com/blog/2006/11/13/javascript-we-hardly-new-ya/

Problemi correlati