Avatar ·

Warum ist die Verwendung von for...in zum Durchlaufen eines Arrays eine schlechte Idee?

Hallo! Ich habe vor kurzem angefangen, JavaScript zu lernen, und mir ist aufgefallen, dass `for...in` oft zum Durchlaufen von Objekteigenschaften verwendet wird. Ich dachte, da ein Array auch ein Objekt ist, könnte ich dieselbe Schleife auch dafür verwenden. Ich habe diesen Code geschrieben:\n\n```javascript\nconst numbers = [10, 20, 30, 40];\n\nfor (let index in numbers) {\n console.log(numbers[index]);\n}\n```\n\nEs scheint zu funktionieren – es werden 10, 20, 30, 40 ausgegeben. Aber ich habe bemerkt, dass viele erfahrene Entwickler diesen Ansatz ablehnen und sagen, dass es eine "schlechte Praxis" ist. Warum? Der Code funktioniert doch! Welche Probleme können auftreten, wenn man `for...in` für Arrays verwendet? Und was sollte man stattdessen verwenden? Bitte erklärt es mir anhand von Beispielen, damit ich es ein für alle Mal verstehe. Vielen Dank im Voraus!\n<<>>\n

Warum for...in nicht für Arrays gedacht ist

\n

Die `for...in`-Schleife ist nicht für Arrays konzipiert, weil sie über alle aufzählbaren Eigenschaften eines Objekts iteriert, einschließlich solcher, die von der Prototypenkette geerbt wurden. Bei Arrays bedeutet das, dass sie nicht nur die Indizes (0, 1, 2, ...), sondern auch alle anderen Eigenschaften durchläuft, die dem Array-Objekt hinzugefügt wurden. Außerdem ist die Reihenfolge der Iteration nicht garantiert, was zu unerwartetem Verhalten führen kann. Stattdessen sollte man `for...of`, `Array.prototype.forEach` oder eine traditionelle `for`-Schleife verwenden, die speziell für Arrays optimiert sind und nur die Elemente in der richtigen Reihenfolge durchlaufen.