2083 Stimmen

Warum ist es eine schlechte Idee, "for...in" zur Iteration von Arrays zu verwenden?

Man hat mir gesagt, for...in nicht mit Arrays in JavaScript zu verwenden. Warum nicht?

54 Stimmen

Ich habe die kürzliche Frage gesehen, in der jemand das zu dir gesagt hat, aber sie meinten nur für Arrays. Es wird als schlechte Praxis betrachtet, durch Arrays zu iterieren, aber nicht unbedingt für die Iteration durch Elemente eines Objekts.

22 Stimmen

Viele Antworten mit "for"-Schleifen wie 'for (var i=0; i

3 Stimmen

@MarkSchultheiss aber das ist eine Rückwärtsiteration. Gibt es eine andere Version der Vorwärtsiteration, die schneller ist?

2voto

Badr Elmers Punkte 1217

Da JavaScript-Elemente als Standardobjekteigenschaften gespeichert werden, ist es nicht ratsam, über JavaScript-Arrays mit for...in-Schleifen zu iterieren, da normale Elemente und alle aufzählbaren Eigenschaften aufgelistet werden.

Von https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Indexed_collections

1voto

jcomeau_ictx Punkte 36287

Auch wenn in dieser Frage nicht speziell angesprochen, würde ich hinzufügen, dass es einen sehr guten Grund gibt, niemals for...in mit einer NodeList zu verwenden (wie man sie bei einem querySelectorAll-Aufruf erhalten würde), da sie die zurückgegebenen Elemente überhaupt nicht sieht, sondern nur über die Eigenschaften der NodeList iteriert.

im Fall eines einzelnen Ergebnisses erhielt ich:

var nodes = document.querySelectorAll(selector);
nodes
 NodeList [a._19eb]
for (node in nodes) {console.log(node)};
VM505:1 0
VM505:1 length
VM505:1 item
VM505:1 entries
VM505:1 forEach
VM505:1 keys
VM505:1 values

was erklärt, warum mein for (node in nodes) node.href = newLink; nicht funktionierte.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X