Frage

JSlint gibt mir diesen Fehler:

Problem in Zeile 11 Zeichen 33: Verwenden Sie die Array -Literalnotation [].

var myArray = new Array();

Was ist Array buchstäbliche Notation und warum soll ich sie stattdessen verwenden?

Es zeigt hier das new Array(); Sollte es gut funktionieren ... Fehlt mir etwas?

War es hilfreich?

Lösung

In der Array Birdal Notation definieren Sie ein neues Array mit nur leeren Klammern. In Ihrem Beispiel:

var myArray = [];

Es ist die "neue" Art, Arrays zu definieren, und ich nehme an, es ist kürzer/sauberer.

Die folgenden Beispiele erläutern den Unterschied zwischen ihnen:

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

Bezug: Was ist der Unterschied zwischen "Array ()" und [], während sie ein Javascript -Array deklariert?

Andere Tipps

Siehe auch: Was ist los mit var x = new Array ();

Abgesehen vom Crockford -Argument glaube ich, dass es auch darauf zurückzuführen ist, dass andere Sprachen ähnliche Datenstrukturen haben, die zufällig dieselbe Syntax verwenden. zum Beispiel, Python hat Listen und Wörterbücher; Siehe folgende Beispiele:

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

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

Ist es nicht ordentlich, wie Python auch grammatikalisch korrektes JavaScript ist? (Ja, die Ende-Semikolons fehlen, aber diese sind auch nicht für JavaScript erforderlich)

Durch die Wiederverwendung gemeinsamer Paradigmen in der Programmierung retten wir alle daran, etwas neu zu lernen, das nicht müssen.

Abgesehen von dem Crockford -Argument sagt JSPERF, dass es schneller ist. http://jsperf.com/new-vs-litereral-arraydeclaration

Nachdem ich mich @ecMode JSERF angesehen hatte, habe ich einige weitere Tests durchgeführt.

Bei der Verwendung von Push, um das Array New Array () hinzuzufügen, ist auf Chrome erheblich schneller:

http://jsperf.com/new-vs-litereral-arraydeclaration/2

Die Verwendung von Index zum Hinzufügen ist für [] etwas schneller.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top