Tracks
/
JavaScript
JavaScript
/
Lehrplan
/
switch-Anweisung
sw

switch-Anweisung in JavaScript

4 Übungen

Über switch-Anweisung

Allgemeine Syntax

Neben der if-Anweisung gibt es in JavaScript auch die switch-Anweisung, um Logik bedingt auszuführen. Sie wird verwendet, wenn eine einzelne Variable mit mehreren Varianten verglichen werden soll. Der Vergleich prüft auf strikte Gleichheit (===), siehe das Konzept Comparison. Für eine Variable x sieht die switch-Anweisung in JavaScript so aus:

switch (x) {
  case option1:
    // code that is executed when "x === option1" is true
    break;
  case option2:
    // code that is executed when "x === option2" is true
    break;
  default:
    // code that is executed when x does not equal any of the
    // options
}

Der default-Fall ist optional. Du nutzt ihn, wenn du Code ausführen möchtest, sofern keine der anderen Optionen zur Variablen passt.

Fallthrough als Standardverhalten

Die break-Anweisungen oben sind nötig, weil in JavaScript standardmäßig alle Fälle einen Fallthrough haben. Das bedeutet: Ohne eine break-Anweisung würde der gesamte Code in den Fällen unterhalb der ersten passenden Option ausgeführt, obwohl x nicht zu diesen Optionen passt. Dieses standardmäßige Fallthrough-Verhalten ist eine häufige Stolperfalle beim Einsatz von switch in JavaScript. Innerhalb einer Funktion kannst du statt break auch return verwenden, um dieses Problem zu vermeiden.

Du kannst das Fallthrough-Verhalten gezielt nutzen, wenn du denselben Code für mehrere Fälle anwenden willst. Ein Beispiel dafür findest du in der MDN-Dokumentation.

Gültigkeitsbereich

Standardmäßig teilen sich die Variablen in den verschiedenen case-Anweisungen denselben Gültigkeitsbereich. Das kann zu unerwartetem Verhalten führen. Wenn du zum Beispiel einen Fall kopierst und einfügst, kann es passieren, dass du in zwei Fällen eine Deklaration let message hast, was zu einem Fehler führt, siehe MDN-Dokumentation. Um Probleme durch den gemeinsamen Gültigkeitsbereich zu vermeiden, kannst du für jede case-Anweisung einen eigenen Gültigkeitsbereich anlegen, indem du für jeden Fall einen Block mit geschweiften Klammern hinzufügst.

switch (x) {
  case option1: {
    // Variables declared here are contained to this case.
    break;
  }
  case option2: {
    // ...
    break;
  }
  default: {
    // ...
  }
}

Ausdrücke verwenden

Statt einer Variablen x kannst du auch einen Ausdruck verwenden. Dieser Ausdruck wird einmal am Anfang der switch-Anweisung ausgewertet, und das Ergebnis wird mit den Fällen verglichen. Häufig wird damit ein „Type Switch“ umgesetzt, der je nach Typ einer Variablen unterschiedlichen Code ausführt.

switch (typeof x) {
  case 'string':
    // code that is executed when x is a string
    break;
  case 'number':
    // code that is executed when x is a number
    break;
  default:
    // code that is executed when x has some other type
}

Auch die Optionen können Ausdrücke sein.

Über GitHub bearbeiten Der Link öffnet sich in einem neuen Fenster oder Tab

Lerne switch-Anweisung