Sie können wie im vorherigen Kapitel mehrere if...else if-Anweisungen verwenden, um mehrere Verzweigungen auszuführen. Dies ist jedoch nicht immer die beste Lösung, insbesondere wenn alle Zweige vom Wert einer einzelnen Variablen abhängen.
Ab JavaScript 1.2 können Sie genau diese Situation mit einer Switch-Anweisung bewältigen, was effizienter ist, wenn anstelle der wiederholten Verwendung von if...else if-Anweisungen.
Grammatik
switch-Anweisung gibt einen Ausdruck an, um mehrere verschiedene Anweisungen basierend auf dem Wert dieses Ausdrucks auszuwerten und zu berechnen. Der Interpreter prüft jeden Fall auf den Wert des Ausdrucks, bis eine Übereinstimmung gefunden wird. Wenn keine Übereinstimmung vorliegt, wird die Standardbedingung verwendet.
switch (expression) { case condition 1: statement(s) break; case condition 2: statement(s) break; ... case condition n: statement(s) break; default: statement(s) }
break-Anweisung weist den Interpreter an, unter bestimmten Umständen zu beenden. Wenn sie weggelassen werden, führt der Interpreter jede Anweisung in jedem der folgenden Fälle weiter aus.
Wir erklären die break-Anweisung im Kapitel zur Schleifensteuerung.
Beispiel:
Das folgende Beispiel veranschaulicht eine einfache While-Schleife:
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); break; case 'B': document.write("Pretty good<br />"); break; case 'C': document.write("Passed<br />"); break; case 'D': document.write("Not so good<br />"); break; case 'F': document.write("Failed<br />"); break; default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
Dies führt zu folgenden Ergebnissen:
Entering switch block Good job Exiting switch block
Beispiel:
Stellen Sie sich eine solche Situation vor, wenn die break-Anweisung nicht verwendet wird:
<script type="text/javascript"> <!-- var grade='A'; document.write("Entering switch block<br />"); switch (grade) { case 'A': document.write("Good job<br />"); case 'B': document.write("Pretty good<br />"); case 'C': document.write("Passed<br />"); case 'D': document.write("Not so good<br />"); case 'F': document.write("Failed<br />"); default: document.write("Unknown grade<br />") } document.write("Exiting switch block"); //--> </script>
Dies führt zu folgenden Ergebnissen:
Entering switch block Good job Pretty good Passed Not so good Failed Unknown grade Exiting switch block