3 Dinge, die Sie nicht über die forEach-Schleife in JS wussten

 Tiberiu Oprea
Tiberiu Oprea

Folgen

Jun 26, 2018 · 3 min lesen

Glaubst du, du weißt genau, wie die forEach Schleife in JS funktioniert?

Nun, das waren meine Gedanken bis vor kurzem: „Nur eine normalefor -Schleife, in der Sie problemlos break oder return oder continue verwenden können“.

Heute zeige ich Ihnen 3 Dinge, die Sie vielleicht noch nicht über die forEach -Schleife gewusst haben.

Denken Sie, der folgende Code würde 1 2 drucken und dann anhalten?

array = ;array.forEach(function (element) {
console.log(element);
if (element === 2)
return;
});// Output: 1 2 3 4

Nein, wird es nicht. Wenn Sie aus einem Java-Hintergrund kommen, würden Sie sich wahrscheinlich fragen, wie das möglich ist?

Der Grund dafür ist, dass wir in unserer forEach -Funktion eine Rückruffunktion übergeben, die sich wie eine normale Funktion verhält und auf jedes Element angewendet wird, unabhängig davon, ob wir return von einem haben, dh wenn das Element in unserem Fall 2 ist.

Aus den offiziellen MDN-Dokumenten:

Es gibt keine andere Möglichkeit, eine forEach() -Schleife zu stoppen oder zu unterbrechen, als eine Ausnahme auszulösen. Wenn Sie ein solches Verhalten benötigen, ist die Methode forEach() das falsche Werkzeug.

Schreiben wir den Code von oben neu:

const array = ;const callback = function(element) {
console.log(element);
if (element === 2)
return; // would this make a difference? no.
}for (let i = 0; i < array.length; i++) {
callback(array);
}// Output: 1 2 3 4

Die Anweisung return macht keinen Unterschied, da wir die Funktion bei jeder Iteration auf jedes Element anwenden, daher ist es egal, ob Sie einmal beendet haben, dh wenn das Element 2 ist.

Sie können nicht brechen

Denken Sie, eineforEach Schleife würde break im folgenden Beispiel?

const array = ;array.forEach(function(element) {
console.log(element);
if (element === 2)
break;
});// Output: Uncaught SyntaxError: Illegal break statement

Nein, es wird nicht einmal ausgeführt, da sich die Anweisung break technisch nicht in einer Schleife befindet.

Lösung?

Verwenden Sie einfach eine normale for -Schleife. Niemand würde dich auslachen.

const array = ;for (let i = 0; i < array.length; i++) {
console.log(array);
if (array === 2)
break;
}// Output: 1 2

Sie können nicht fortfahren

Erwarten Sie, dass der folgende Code das Drucken von 2 auf der Konsole überspringt und nur 1 3 4 anzeigt?

const array = ;array.forEach(function (element) {
if (element === 2)
continue;
console.log(element);
});// Output: Uncaught SyntaxError: Illegal continue statement: no surrounding iteration statement

Nein, es wird nicht einmal ausgeführt, da sich die Anweisung continue nicht in einer Schleife befindet, ähnlich der Anweisung break.

Lösung?

Verwenden Sie einfach wieder eine normale for -Schleife.

for (let i = 0; i < array.length; i++) {
if (array === 2)
continue;
console.log(array);
}// Output: 1 3 4

Das war’s! Ich hoffe, Sie haben heute etwas Neues gelernt.