JSLint gibt mir diesen Fehler:
Problem in Zeile 11, Zeichen 33: Verwenden Sie die Array-Literal-Notation [].
var myArray = new Array();
Was ist Array-Literal-Notation und warum soll ich sie stattdessen verwenden?
Es zeigt hier, dass new Array();
es gut funktionieren sollte ... fehlt mir etwas?
javascript
arrays
jslint
literals
Matt
quelle
quelle
Antworten:
In der Array-Literal-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 erklären 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
quelle
[]
. Der Grund dafür ist, dass es sicherer ist, weil jemand möglicherweise denwindow.Array
Konstruktor überschreiben könnte, aber nicht das Literal.var a: string[] = [];
.Siehe auch: Was ist los mit var x = new Array ();
Abgesehen vom Crockford-Argument glaube ich, dass dies auch auf die Tatsache zurückzuführen ist, dass andere Sprachen ähnliche Datenstrukturen haben, die zufällig dieselbe Syntax verwenden. Python verfügt beispielsweise über 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 endenden Semikolons fehlen, aber diese sind auch für Javascript nicht erforderlich.)
Indem wir gängige Paradigmen in der Programmierung wiederverwenden, ersparen wir jedem, etwas neu lernen zu müssen, was nicht sein sollte.
quelle
Abgesehen von dem Crockford-Argument sagt jsPerf, dass es schneller ist. http://jsperf.com/new-vs-literal-array-declaration
quelle
Nachdem ich mir @ecMode jsperf angesehen hatte, führte ich einige weitere Tests durch.
Wenn Sie Push zum Hinzufügen zum Array verwenden, ist neues Array () in Chrome erheblich schneller:
http://jsperf.com/new-vs-literal-array-declaration/2
Die Verwendung des Index zum Hinzufügen ist für [] etwas schneller.
quelle