JavaScript für Ungeduldige. Cay Horstmann
Чтение книги онлайн.
Читать онлайн книгу JavaScript für Ungeduldige - Cay Horstmann страница 22
switch (someExpression) {
case 0:
description = 'zero'
break
case false:
case true:
description = 'boolean'
break
case '':
description = 'empty string' // Siehe den Vorsicht-Kasten weiter hinten
default:
description = 'something else'
}
Die Ausführung beginnt bei dem case-Label, das strikt gleich dem Wert des Ausdrucks ist, und läuft bis zur nächsten break-Anweisung oder bis zum Ende der switch-Anweisung. Stimmt keines der case-Labels mit dem Wert überein, beginnt die Ausführung am default-Label, sofern eines vorhanden ist. Da auf strikte Gleichheit geprüft wird, darf es sich bei den case-Labels nicht um Objekte handeln.
Vorsicht
Wenn Sie am Ende einer der Alternativen die break-Anweisung vergessen, fällt die Ausführung bis zur nächsten Alternative durch! Das geschieht in dem vorherigen Beispiel, wenn value der leere String ist. Dadurch wird description erst auf 'empty string' und dann auf 'something else' gesetzt. Dieses Durchfallen ist gefährlich und eine häufige Fehlerursache. Daher verzichten manche Entwickler auf switch-Anweisungen.
Tipp
In vielen Fällen ist der Leistungsunterschied zwischen einer switch-Anweisung und einer gleichwertigen Folge von if-Anweisungen zu vernachlässigen. Wenn Sie switch verwenden, kann die virtuelle Maschine bei einer großen Anzahl von Fällen jedoch eine Sprungtabelle nutzen, um den passenden Fall rasch zu finden.
2.9while- und do-Schleifen
Auch diesen Abschnitt können Sie überspringen, wenn Sie mit C, C++, Java oder C# vertraut sind.
Eine while-Schleife führt eine Anweisung aus (bei der es sich auch um eine Blockanweisung handeln kann), während eine Bedingung erfüllt ist. Die allgemeine Form lautet:
while (Bedingung) Anweisung
Die folgende Schleife ermittelt, wie lange es dauert, einen bestimmten Geldbetrag für Ihren wohlverdienten Lebensabend anzusparen, vorausgesetzt, dass Sie jedes Jahr denselben Geldbetrag zu einem festen Zinssatz anlegen:
let years = 0
while (balance < goal) {
balance += paymentAmount
let interest = balance * interestRate / 100
balance += interest
years++
}
console.log(`${years} years.`)
Ist die Bedingung schon zu Anfang false, wird die while-Schleife niemals ausgeführt. Soll der Block dagegen auf jeden Fall mindestens einmal ausgeführt werden, müssen Sie den Test ans Ende verschieben, indem Sie eine do/while-Schleife verwenden. Deren Syntax sieht wie folgt aus:
do Anweisung while (Bedingung)
Diese Schleife führt die Anweisung aus (gewöhnlich einen Block) und prüft dann die Bedingung. Ist die Bedingung erfüllt, werden die Anweisung und der Test wiederholt. Betrachten Sie dazu das folgende Beispiel:
do {
i++
} while (i < s.length && s[i] != ' ')
Die Schleife endet, wenn entweder i über das Ende des Strings hinausgeht oder s[i] ein Leerzeichen ist.
Die do-Schleife ist weniger gebräuchlich als die while-Schleife.
2.10for-Schleifen
Die for-Schleife ist ein allgemeines Konstrukt für die Iteration über mehrere Elemente. In den folgenden drei Abschnitten sehen wir uns die verschiedenen Varianten an, die in JavaScript zur Verfügung stehen.
2.10.1Die klassische for-Schleife
Die klassische Form der for-Schleife funktioniert genauso wie in C, C++, Java und C#. Dabei wird nach jedem Durchlauf ein Zähler oder eine vergleichbare Variable aktualisiert. Die folgende Schleife protokolliert die Zahlen von 1 bis 10:
for (let i = 1; i <= 10; i++)
console.log(i)
An der ersten Position der for-Anweisung steht die Zählerinitialisierung. Die zweite gibt die Bedingung an, die vor jedem Durchlauf überprüft wird, und die dritte gibt an, wie der Zähler danach geändert werden soll.
Wie die Initialisierung, der Test und die Aktualisierung ablaufen, hängt davon ab, welche Art von Durchlauf Sie damit erreichen wollen. Die Schleife im folgenden Beispiel sucht alle Elemente eines Arrays in umgekehrter Reihenfolge auf:
for (let i = a.length - 1; i >= 0; i--)
console.log(a[i])
Tipp
In der ersten Position einer for-Schleife können Sie beliebige Variablendeklarationen und Ausdrücke verwenden sowie in den anderen Positionen beliebige Ausdrücke. Allerdings gilt es als guter Stil, dabei dieselbe Variable zu initialisieren, zu testen und zu aktualisieren.
Hinweis
Mithilfe des Komma-Operators ist es möglich, mehrere Aktualisierungsausdrücke in die dritte Position einer for-Schleife zu zwängen:
for (let i = 0, j = a.length - 1; i < j; i++, j--) {
let temp = a[i]
a[i] = a[j]
a[j] = temp
}