Menu

JavaScript for-Schleife: Syntax, Beispiele & break

Wie die klassische for-Schleife in JavaScript funktioniert: der dreiteilige Kopf, Arrays durchlaufen, break und continue, verschachtelte Schleifen und typische Stolperfallen.

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.

index.js
Output
Click Run to see the output here.

Fünf Durchläufe, fünf Ausgabezeilen. Schauen wir uns den Kopf der Schleife genauer an:

  • let i = 0 läuft genau einmal, bevor die Schleife startet. Damit wird der Zähler initialisiert.
  • i < 5 wird vor jedem Durchlauf geprüft. Ist die Bedingung true, wird der Rumpf ausgeführt. Bei false endet 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:

index.js
Output
Click Run to see the output here.

Schritt für Schritt:

  1. let i = 1 — der Zähler wird angelegt und auf 1 gesetzt.
  2. Prüfung i <= 3 — wahr, also wird der Schleifenkörper ausgeführt. Ausgabe: 1.
  3. i++ wird ausgeführt — i ist jetzt 2.
  4. Prüfung i <= 3 — wahr. Ausgabe: 2.
  5. i++ wird ausgeführt — i ist jetzt 3.
  6. Prüfung i <= 3 — wahr. Ausgabe: 3.
  7. i++ wird ausgeführt — i ist jetzt 4.
  8. 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:

index.js
Output
Click Run to see the output here.

Ein paar Dinge sind hier erwähnenswert:

  • Arrays beginnen bei Index 0. Das erste Element liegt also bei 0, das letzte bei length - 1.
  • Die Bedingung lautet i < fruits.length, nicht i <= fruits.length. Mit <= würdest du einen Schritt zu weit laufen und am Ende undefined ausgeben.
  • i wird mit let deklariert 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:

index.js
Output
Click Run to see the output here.

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.

index.js
Output
Click Run to see the output here.

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:

index.js
Output
Click Run to see the output here.

Count down:

index.js
Output
Click Run to see the output here.

Ein Array rückwärts durchlaufen — praktisch, wenn du währenddessen Elemente entfernst:

index.js
Output
Click Run to see the output here.

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.

index.js
Output
Click Run to see the output here.

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.

Lerne mit Coddy zu programmieren

LOS GEHT'S