Obwohl Arrays Objekte in Javascript sind, wird die Verwendung von for-in-Schleifen zum Durchlaufen von Arrays nicht empfohlen. Tatsächlich gibt es viele Gründe, die uns davon abhalten, for-in-Schleifen für Arrays zu verwenden.
Da die for-in-Schleife alle Eigenschaften in der Prototypenkette auflistet und die einzige Möglichkeit, sie zu stoppen, darin besteht, hasOwnProperty zur Beurteilung zu verwenden, ist dies viel langsamer als eine normale for-Schleife.
Traverse
Für eine optimale Leistung ist die Verwendung einer klassischen for-Schleife die beste Möglichkeit, über ein Array zu iterieren.
Ein zusätzlicher Trick besteht darin, die Länge des Arrays über l = list.length zwischenzuspeichern.
Obwohl die Längeneigenschaft im Array selbst definiert ist, entsteht bei jeder Iteration der Schleife immer noch ein Overhead. Obwohl die neueste Javascript-Engine möglicherweise über Leistungsoptimierungen für diese Situation verfügt, gibt es keine Garantie dafür, dass Ihr Javascript-Code immer in diesem Browser ausgeführt wird.
Tatsächlich sind Schleifen mit nicht zwischengespeicherten Längen viel langsamer als Schleifen mit zwischengespeicherten Längen.
Längenattribut
Obwohl die Längeneigenschaft über die Getter-Methode nur die Anzahl der Elemente im Array zurückgibt, kann das Array über die Setter-Methode gekürzt werden.
Durch die Zuweisung einer kleineren Zahl zur Längeneigenschaft wird das Array abgeschnitten, während die Zuweisung einer größeren Zahl das Array nicht abschneidet.
Zusammenfassung
Für eine optimale Leistung wird empfohlen, eine for-Schleife anstelle einer for-in-Schleife zu verwenden und die Längeneigenschaft zwischenzuspeichern.
Es gibt auch Array-Objekte, die keine Methoden haben, sondern nur eine eindeutige Attributlänge. String-Objekte haben Längenmethoden~~