Domanda

JSLint mi sta dando questo errore:

  

Problemi alla riga 11 caratteri. 33: Usare la notazione letterale array []

var myArray = new Array();

Qual è array notazione letterale e perché si vuole che io lo uso, invece?

Si dimostra qui che new Array(); dovrebbe funzionare bene ... c'è qualcosa che mi manca?

È stato utile?

Soluzione

array letterale notazione è dove si definisce un nuovo array utilizzando le parentesi solo vuote. Nel tuo esempio:

var myArray = [];

E 'il modo "nuovo" di definire array, e suppongo che è più breve / più pulita.

Gli esempi che seguono spiegano la differenza tra loro:

var a = [],            // these are the same
    b = new Array(),   // a and b are arrays with length 0

    c = ['foo', 'bar'],           // these are the same
    d = new Array('foo', 'bar'),  // c and d are arrays with 2 strings

    // these are different:
    e = [3],             // e.length == 1, e[0] == 3
    f = new Array(3);   // f.length == 3, f[0] == undefined
  

Riferimento : Qual è la differenza tra “Array ()” e “[]” pur dichiarando un JavaScript array?

Altri suggerimenti

Si veda anche: Cosa c'è di sbagliato con var x = new Array ();

A parte l'argomento Crockford, credo che sia anche dovuto al fatto che le altre lingue hanno strutture dati simili che si trovano ad utilizzare la stessa sintassi; per esempio, Python ha liste e dizionari ; vedere i seguenti esempi:

// this is a Python list
a = [66.25, 333, 333, 1, 1234.5]

// this is a Python dictionary
tel = {'jack': 4098, 'sape': 4139}

Non è pulito come Python è anche grammaticalmente corretto Javascript? (Sì, la desinenza punti e virgola sono mancanti, ma quelli non sono richiesti per Javascript, o)

Quindi, riutilizzando paradigmi comuni nella programmazione, risparmiamo tutti, da dover imparare di nuovo qualcosa che non dovrebbe essere necessario.

A parte l'argomento Crockford, jsPerf dice che è più veloce. http://jsperf.com/new-vs-literal-array-declaration

Dopo aver guardato @ecMode jsperf, ho fatto alcuni ulteriori test.

Quando si utilizza spinta per aggiungere alla matrice new Array () è notevolmente più veloce su Chrome:

http://jsperf.com/new-vs-literal-array- dichiarazione / 2

Utilizzo di indice per aggiungere è leggermente più veloce per [].

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top