Wenn wir Abschnitt 7.1 der sechsten Ausgabe von „The Definitive Guide to JavaScript“ studieren, um ein Array über ein Array-Literal zu erstellen, können wir einem Element des Arrays keinen Wert zuweisen und es wird undefiniert. Obwohl es undefiniert ist, führt undefiniert auch dazu, dass die Länge um 1 erhöht wird, wenn wir die Längeneigenschaft des Array-Objekts aufrufen. Es gibt vier Situationen, wie unten gezeigt:
var undef0 = [,,]; var undef1 = [1,,]; var undef2 = [,1,]; var undef3 = [,,1]; console.log(undef0.length); console.log(undef1.length); console.log(undef2.length); console.log(undef3.length);
Wir können die Länge jeder der vier console.log-Ausgaben vorhersehen . Ich schätze, beide sind 3. Das tatsächliche Ergebnis ist wie folgt:
Warum ist das so? Die Antwort lautet: Die Syntax von Array-Literalen erlaubt optionale nachgestellte Kommas, also [,,], [ In den drei Im Fall von 1,,] und [,1,] geht die JS-Engine davon aus, dass das letzte Komma das Endkomma ist, und geht daher davon aus, dass es im Fall von [,,1] nur zwei Elemente gibt Nach dem letzten Komma wird ein weiteres Element hinzugefügt, sodass das letzte Komma nicht das Ende ist, sodass wir davon ausgehen können, dass die Länge von [,,1,] immer noch 3 beträgt.