Ich habe viele Fragen gesehen, die vorschlagen, Folgendes zu verwenden:
for (var i = 0; i < myArray.length; i++){ /* ... */ }
anstatt:
for (var i in myArray){ /* ... */ }
für Arrays aufgrund inkonsistenter Iteration ( siehe hier ).
Ich kann jedoch anscheinend nichts finden, was die objektorientierte Schleife zu bevorzugen scheint:
myArray.forEach(function(item, index){ /* ... */ });
Was mir viel intuitiver erscheint.
Für mein aktuelles Projekt ist die IE8-Kompatibilität wichtig, und ich denke darüber nach, Mozillas Polyfill zu verwenden . Ich bin mir jedoch nicht 100% sicher, wie dies funktionieren wird.
- Gibt es Unterschiede zwischen dem Standard für die Schleife (das erste Beispiel oben) und der Implementierung von Array.prototype.forEach durch moderne Browser?
- Gibt es einen Unterschied zwischen modernen Browser-Implementierungen und der oben genannten Implementierung von Mozilla (unter besonderer Berücksichtigung von IE8)?
- Die Leistung ist weniger ein Problem, sondern nur die Konsistenz, mit der die Eigenschaften wiederholt werden.
holes
wo es sein undefined
sollte, und andere kaputte Methoden, wie slice
und hasOwnProperty
wrt zu arraylike DOM-Objekten. Meine Tests es5 shim
haben gezeigt, dass solche Shimmed-Methoden der Spezifikation entsprechen (nicht getestete MDN-Shim).
Array.find()
, um aus der Schleife auszubrechen, nachdem Sie eine erste Übereinstimmung gefunden haben.
break
rauszukommenforEach
. Ein großer Vorteil ist jedoch die Schaffung eines neuen Bereichs mit der Funktion. Mit der Polyfüllung sollten Sie keine Probleme haben (zumindest bin ich auf keine gestoßen).