Im Gegensatz zur Java -Sprache haben Arrays in JavaScript drei Funktionen:
1. Kein Typ. Die Mitglieder eines Arrays können von jedem Typ sein, und das gleiche Array kann auch aus vielen verschiedenen Arten von Mitgliedern bestehen.
2. Die Länge ist variabel. Die Länge eines Arrays kann dynamisch verändert werden, sodass in JavaScript kein Problem der außergewöhnlichen Array-Zugriffszugriffe besteht.
3. Diskontinuität. Die Positionen der Mitglieder im Array können kontinuierlich (0, 1, 2, 3…) oder diskontinuierlich sein. Jedes Array hat ein Attribut namens Länge. Wenn die Array -Mitglieder kontinuierlich sind, stimmt der Längenwert mit der Anzahl der Array -Mitglieder überein. Wenn die Array -Mitglieder nicht kontinuierlich sind, ist der Längenwert größer als die Anzahl der Array -Mitglieder. Im Vergleich zu kontinuierlichen Arrays ist die Lese- und Schreibleistung diskontinuierlicher Arrays schlechter.
Experiment:
Die Codekopie lautet wie folgt:
var o = [42, "Beispieltext", {x: 88}]; // JavaScript-Array ist untyp.
console.log (o); // [42, "Beispieltext", Objekt {x = 88}]
o [3] = 27; // JavaScript -Array ist dynamisch.
console.log (o); // [42, "Beispieltext", Objekt {x = 88}, 27]
o [5] = 99; // JavaScript -Array ist spärlich.
console.log (o); // [42, "Beispieltext", Objekt {x = 88}, 27, undefiniert, 99]
Wie aus dem obigen Beispiel ersichtlich ist, kehrt JavaScript für diskontinuierliche Arrays bei dem Zugriff auf das fehlende Mitglied undefiniert zurück. Wenn das Array kontinuierlich ist, aber eines seiner Mitglieder undefiniert ist, ist das Ergebnis des Zugriffs auf das Array das gleiche:
Die Codekopie lautet wie folgt:
var a = [42, "Beispieltext", {x: 88}, 27, undefiniert, 99];
console.log (a); // [42, "Beispieltext", Objekt {x = 88}, 27, undefiniert, 99]
Das Array ist diskontinuierlich und hat fehlende Mitglieder, was das gleiche ist, wie das Array kontinuierlich ist, aber undefinierte Mitglieder. In beiden Fällen ist das Ergebnis des Zugriffs auf den Array -Inhalt gleich. Es gibt jedoch immer noch einige subtile Unterschiede zwischen den beiden, die sich hauptsächlich beim Zugriff auf den Array -Schlüssel manifestieren:
Die Codekopie lautet wie folgt:
console.log (4 in o); // false
console.log (4 in a); // true
Es ist ersichtlich, dass die Ergebnisse, die durch den Zugriff auf den Inhalt in diesen beiden Fällen erhalten wurden, der interne Mechanismus völlig unterschiedlich ist: Wenn das Array diskontinuierlich ist, fehlt ein bestimmtes Mitglied. Wenn JavaScript auf das Mitglied zugreifen, gibt JavaScript undefiniert zurück. Wenn das Array kontinuierlich ist, existieren alle Mitglieder, aber die Werte einiger Mitglieder sind relativ speziell und undefiniert.
Aus dem obigen Beispiel können wir auch erkennen, dass die Essenz von Arrays in JavaScript nur ein Objekt mit Zahlen als Schlüssel ist und es keinen Unterschied zwischen gewöhnlichen Schlüsselwerten und Objekten gibt. Tatsächlich versucht JavaScript beim Lesen und Schreiben eines Arrays, die Parameter in positive Ganzzahlen umzuwandeln. Wenn die Konvertierung erfolgreich ist, wird der Array -Vorgang durchgeführt (aktualisieren Sie automatisch die Länge Eigenschaft des Arrays). Wenn es fehlschlägt, werden die Parameter in eine Zeichenfolge konvertiert und dann ein normales Objekt lesen und schreiben. Natürlich werden bei der Implementierung des JavaScript -Dolmetschers viele Leistungsoptimierungen für die Funktion von Arrays mit Zahlen als Schlüssel durchgeführt. Daher wird bei der tatsächlichen Verwendung, wenn die Schlüssel des Objekts alle Zahlen sind, direkt mit dem Array -Objekt effizientere Ergebnisse erzielt.
Bei der Definition eines Arrays ermöglicht JavaScript zusätzliche Kommas und ermöglicht auch fehlende Array -Mitglieder zwischen zwei Kommas:
Die Codekopie lautet wie folgt:
var x = [1,2,3,]; // Nachfolgerkomma wird weggelassen.
console.log (x.length); // 3
var y = [1,, 3]; // Mitglied kann übersehen werden.
console.log (y); // [1, undefiniert, 3]
console.log (1 in y); // false
console.log (y.length); // 3
Für die Arrayerstellung unterstützt JavaScript vier Methoden:
1. Verwenden Sie Literale (z. B. Klammerausdrücke in den obigen Beispielen), um ein Array -Objekt direkt zu erstellen.
2. Verwenden Sie den Array () -Konstruktor und übergeben Sie keine Parameter. In diesem Fall wird ein leeres Array mit dem gleichen Effekt wie [] erstellt.
3. Verwenden Sie den Array () -Konstruktor, um eine positive Ganzzahl als Länge des Arrays zu übergeben. In diesem Fall reserviert JavaScript den entsprechenden Speicherplatz, um dieses Array zu speichern. Es ist erwähnenswert, dass die Schlüssel des Arrays zu diesem Zeitpunkt nicht definiert sind, das heißt, es gibt keine Mitglieder im Array. Sein Effekt entspricht der von [,,,]
V.
Experiment:
Die Codekopie lautet wie folgt:
var z = New Array (10); // Voralokende Speicher, aber es ist noch kein Index definiert.
console.log (3 in z); // false
var M = Neuarray (42, 33, 99, "Test", {k: 99});
console.log (m); // [42, 33, 99, "test", Objekt {k = 99}]
Im ECMascript 5 -Standard kann Array.isArray () verwendet werden, um festzustellen, ob ein Objekt ein Array ist:
Die Codekopie lautet wie folgt:
Array.isArray ([]); // true
Array.isArray ({}); // false