Die klassische for-Schleife
Wenn du genau weißt, wie oft etwas wiederholt werden soll, ist die for-Schleife in JavaScript das Mittel der Wahl. Sie bündelt die drei Bausteine einer Zählschleife – Startwert, Abbruchbedingung und Schrittweite – kompakt in einer einzigen Kopfzeile.
Fünf Durchläufe, fünf Ausgabezeilen. Schauen wir uns den Kopf der Schleife genauer an:
let i = 0läuft genau einmal, bevor die Schleife startet. Damit wird der Zähler initialisiert.i < 5wird vor jedem Durchlauf geprüft. Ist die Bedingungtrue, wird der Rumpf ausgeführt. Beifalseendet die Schleife.i++läuft nach jedem Durchlauf, unmittelbar bevor die Bedingung erneut geprüft wird.
Die drei Teile trennst du mit Semikolons, nicht mit Kommas. Technisch gesehen sind alle drei optional, aber das Weglassen ist in der Praxis selten — dann greift man meist gleich zu while.
Wie die Bausteine zusammenspielen
Am besten gehst du einen Durchlauf einmal von Hand durch, damit die Reihenfolge wirklich sitzt:
Schritt für Schritt:
let i = 1— der Zähler wird angelegt und auf 1 gesetzt.- Prüfung
i <= 3— wahr, also wird der Schleifenkörper ausgeführt. Ausgabe:1. i++wird ausgeführt —iist jetzt 2.- Prüfung
i <= 3— wahr. Ausgabe:2. i++wird ausgeführt —iist jetzt 3.- Prüfung
i <= 3— wahr. Ausgabe:3. i++wird ausgeführt —iist jetzt 4.- Prüfung
i <= 3— falsch. Schleife wird beendet.
Wichtig: Der Update-Schritt läuft nach dem Schleifenkörper, nicht davor. Genau an dieser Stelle stolpern die meisten.
Über ein Array iterieren mit der for-Schleife
Der klassische Einsatzzweck einer for-Schleife in JavaScript ist das Durchlaufen eines Arrays. Der Zähler dient dabei gleichzeitig als Index:
Ein paar Dinge sind hier erwähnenswert:
- Arrays beginnen bei Index
0. Das erste Element liegt also bei0, das letzte beilength - 1. - Die Bedingung lautet
i < fruits.length, nichti <= fruits.length. Mit<=würdest du einen Schritt zu weit laufen und am Endeundefinedausgeben. iwird mitletdeklariert und lebt damit nur innerhalb der Schleife. Außerhalb existiert die Variable schlicht nicht.
Wenn dich nur die Werte interessieren und nicht der Index, ist die for...of-Schleife in JavaScript kürzer und lesbarer — dazu gibt es ein eigenes Kapitel.
break: Schleife vorzeitig beenden
Mit break steigst du sofort aus der Schleife aus. Praktisch, wenn du gefunden hast, wonach du gesucht hast, und nicht weiter iterieren musst:
Sobald break ausgeführt wird, springt die Ausführung hinter die schließende Klammer der Schleife. Der Update-Schritt läuft nicht mehr, die Bedingung wird nicht erneut geprüft – die Schleife ist schlichtweg beendet.
continue: Aktuellen Durchlauf überspringen
continue überspringt den Rest des aktuellen Durchlaufs und springt direkt zum Update-Schritt. Die Schleife läuft also weiter; nur der aktuelle Durchgang wird nicht zu Ende gebracht.
Gerade Zahlen lösen continue aus und überspringen das console.log. Nur die ungeraden landen am Ende in der Konsole. continue ist praktisch, wenn du bestimmte Durchläufe überspringen willst, ohne den Rest der Schleife in ein if zu verschachteln.
Andere Schrittweiten als +1
Der Update-Ausdruck der for Schleife ist einfach nur ein Ausdruck – er muss nicht zwingend i++ sein. Zählen wir doch mal in Zweierschritten:
Count down:
Ein Array rückwärts durchlaufen — praktisch, wenn du währenddessen Elemente entfernst:
Egal, wofür du dich entscheidest – die Regel bleibt immer gleich: Bedingung und Update müssen so zusammenspielen, dass die Bedingung irgendwann false wird. Passiert das nicht, läuft die Schleife ewig weiter. for (let i = 0; i < 10; i--) ist so eine Endlosschleife – i bewegt sich einfach in die falsche Richtung.
Verschachtelte for-Schleifen in JavaScript
Eine for-Schleife kannst du auch in eine andere for-Schleife packen. Die innere Schleife läuft dabei bei jedem Durchgang der äußeren Schleife komplett durch.
Neun Zeilen Ausgabe — drei äußere Durchläufe, jeweils drei innere. Vergib für jeden Zähler einen sprechenden Namen (row/col, i/j), statt dieselbe Variable wiederzuverwenden.
Ein wichtiger Punkt: break und continue wirken immer nur auf die innerste Schleife. Wenn du aus der inneren Schleife ausbrichst, läuft die äußere trotzdem weiter. Brauchst du einen kompletten Abbruch, setze ein Flag und prüfe es in der äußeren Schleife — oder lagere die verschachtelte Logik in eine Funktion aus und nutze dort return.
Typische Stolperfallen
Ein paar Klassiker, über die Anfänger oft stolpern:
Off-by-One-Fehler. i <= arr.length läuft einen Schritt zu weit, i < arr.length - 1 hört einen Schritt zu früh auf. Die saubere Standardform lautet i < arr.length.
Update vergessen. Lässt du i++ (oder das passende Pendant) weg, ändert sich der Zähler nie und du hast eine Endlosschleife:
for (let i = 0; i < 10; ) {
console.log(i); // endet nie
}
var für den Zähler verwenden. var ist funktionsbezogen (function-scoped), der Zähler schwappt also aus der Schleife heraus und kann in Closures für böse Überraschungen sorgen. Bleib bei let.
Das Array während der Iteration verändern. Beim Entfernen von Elementen verschieben sich die Indizes, und du überspringst Einträge. Wenn du Elemente löschen musst, lauf rückwärts durch das Array oder bau dir mit filter ein neues.
Wann du zu etwas anderem greifen solltest
Die klassische for-Schleife steht dir immer zur Verfügung, aber JavaScript bietet für typische Fälle kürzere Alternativen:
- Über die Werte eines Arrays iterieren:
for (const item of array)liest sich sauberer. - Ein Array transformieren:
array.map(fn)liefert ein neues Array zurück. - Filtern:
array.filter(fn). - Aufsummieren oder reduzieren:
array.reduce(fn, start). - Einfach etwas für jedes Element tun:
array.forEach(fn).
Zur klassischen for-Schleife greifst du dann, wenn du wirklich den Index brauchst, zwischendurch überspringen oder abbrechen willst oder ungewöhnliche Schrittweiten benötigst – etwa rückwärts zählen oder in Zweierschritten.
Weiter geht's: While-Schleifen
Die for-Schleife spielt ihre Stärken aus, wenn du den Bereich im Voraus kennst. Wenn nicht – wenn du einfach so lange weitermachen willst, bis sich eine Bedingung ändert – sind while und do...while die bessere Wahl. Darum geht's auf der nächsten Seite.
Häufig gestellte Fragen
Wie sieht die Syntax einer for-Schleife in JavaScript aus?
Drei Abschnitte, durch Semikolons getrennt, stehen in Klammern: for (init; condition; update) { ... }. init läuft einmal zu Beginn, condition wird vor jedem Durchlauf geprüft, und update wird nach jedem Durchlauf ausgeführt. Ein klassisches Beispiel ist for (let i = 0; i < 10; i++) { ... }.
Wie iteriere ich über ein Array in JavaScript?
Mit der klassischen for-Schleife über den Index: for (let i = 0; i < arr.length; i++) { console.log(arr[i]); }. Wenn du den Index nicht brauchst, ist for...of eleganter: for (const item of arr) { ... }. Geht es ums Umformen oder Filtern, sind Array-Methoden wie map und filter meistens die bessere Wahl.
Wie funktionieren break und continue in einer for-Schleife?
break bricht die Schleife sofort ab — die Ausführung springt direkt hinter die Schleife. continue überspringt nur den Rest des aktuellen Durchlaufs, macht den update-Schritt und prüft danach wieder die Bedingung. Beide wirken immer nur auf die innerste Schleife, es sei denn, du arbeitest mit Labels.
Warum läuft meine for-Schleife endlos?
Meist liegt's daran, dass der update-Schritt die Bedingung nie in Richtung false bewegt. for (let i = 0; i < 10; i--) zählt ewig weiter, weil i bei 0 startet und dann nur immer negativer wird. Prüf also Bedingung und update zusammen — sie müssen so zusammenspielen, dass die Bedingung irgendwann false wird.