Frage

Ich erinnere mich, irgendwo zu lesen (ich denke, es ist in einem der Crockford Papiere war), dass ein Arrayliteral [] verwendet, ist besser als die new Array(); Notation.

Aber ich kann wirklich nicht erinnern, alle Vorteile des einen über den anderen.

Kann mir jemand erklären Sie mir bitte, warum der ehemalige gegenüber letzteren bevorzugt wird?

Hier ist ein Grund, warum ich von denken kann, warum [] ist besser als new Array();:

var Array = function () { };

Überschreiben der Array Objekt-Code brechen ...!

Sie noch mehr Gründe?

War es hilfreich?

Lösung

Brevity

Es weniger Bytes über den Draht zu übertragen, weniger Bytes zu interpretieren, weniger geistige Ressourcen, die sie zu analysieren.

Weniger ist mehr.

Konsistenz

Was ist der Unterschied zwischen diesen beiden Zeilen Code?

var arr = [5];
var arr = new Array(5);

Nach hier new Array(5); nicht ein Array mit 5 Rück darin, stattdessen wird es eine 5-Element-Array zurück, mit allen Elementen undefined sein. Während dieser beiden Linien zurückkehren identische Arrays.

var arr = [5,6];
var arr = new Array(5,6);

Andere Tipps

Ein guter Grund ist, weil der Array-Konstruktor vollständig nicht-intuitives Verhalten. Zum Beispiel:

var a = new Array(5);
console.log(a.length); //prints "5"
console.log(a[0]); //prints "undefined"

var b = new Array(1,2);
console.log(b.length); //prints "2"
console.log(b[0]); //prints "1"

In diesem Fall endet ein 5 ist eine Anordnung von Größer mit allen Elementen undefiniert, und b endet als eine Matrix der Größe 2, mit den Werten [1,2].

var c = new Array("5");
console.log(c.length); //prints "1"
console.log(c[0]); //prints "5"

Und hier, am Ende mit einer Single-Element-Array auf, mit "5"

In der Regel sollten Sie wahrscheinlich nie verwenden, um die Konstrukteure auf eingebauten Typen in Javascript. Sie alle haben seltsame Rand Fällen wie diesem. Zum Beispiel:

var s = new String("Hello");
var l = "Hello";
console.log(typeof(s)); // prints "object"
console.log(typeof(l)); // prints "string"

Elegance

Um es einfach auszudrücken es nur sieht schöner und ist leichter, dass ein Programmierer zu analysieren, vor allem für kompliziertere Datenstrukturen:

var a = [
    ['a list', 'of', 'strings'],
    [1, 2, 3, 4],
    { hello: "This is an object property." }
];

Versus the clumsier OOP-orientierte Methode:

var a = new Array();
var a2 = new Array();

a2.push('a list');
a2.push('of');
a2.push('strings');

var a3 = new Array();
a3.push(1);
a3.push(2);
a3.push(3);
a3.push(4);

var o = new Object();
o.hello = "This is an object property";
a.push(a2, a3, o);

new Array(1, 2, 3) statt [1, 2, 3] ist die gleiche wie new String("cow") statt "cow"

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