Start · Sprachen · JavaScript · Kapitel · Kontrollstrukturen
// Kapitel · JavaScript

Kontrollstrukturen

Diese Sektion behandelt Verzweigungen (if, switch) und Schleifen (for, for...of, for...in, while) in JavaScript, dazu break, continue und den Einsatz von await in Schleifen.

Kontrollstrukturen legen fest, welche Anweisungen wann und wie oft ausgeführt werden. In JavaScript sind das vor allem Verzweigungen (if, switch) und Schleifen (for, while, for...of).

if / else

Die Bedingung wird in einen Boolean umgewandelt. 0, "", null, undefined und NaN gelten als falsy.

const alter = 17;
if (alter >= 18) {
  console.log('volljährig');
} else if (alter >= 16) {
  console.log('fast');
} else {
  console.log('minderjährig');
}

switch

switch vergleicht strikt (===). Ohne break läuft die Ausführung in den nächsten case weiter (Fall-through).

const status = 404;
switch (status) {
  case 200:
    console.log('OK');
    break;
  case 401:
  case 403:
    console.log('Kein Zugriff');
    break;
  default:
    console.log(`Status ${status}`);
}

Schleifen

Für Arrays und andere Iterables ist for...of die erste Wahl. for...in iteriert über die Schlüssel eines Objekts, auch über geerbte. Für Arrays ist es deshalb ungeeignet.

const farben = ['rot', 'grün', 'blau'];
for (const [i, farbe] of farben.entries()) {
  console.log(i, farbe);
}

const user = { name: 'Ada', rolle: 'admin' };
for (const key in user) {
  console.log(key, user[key]);
}

while prüft die Bedingung vor jedem Durchlauf, do...while erst danach. Dort läuft der Rumpf also mindestens einmal.

break, continue und await

break beendet die Schleife, continue springt zum nächsten Durchlauf. Anders als bei forEach funktioniert await in echten Schleifen und arbeitet die Schritte nacheinander ab.

const urls = ['/a', '/b', '/c'];
for (const url of urls) {
  const res = await fetch(url);
  if (!res.ok) continue;
  const data = await res.json();
  if (data.done) break;
}

Tipp: Deklariere Schleifenvariablen mit let oder const. Dann bekommt jeder Durchlauf eine eigene Bindung, und typische Closure-Fehler bleiben aus.