Den Umgang mit logischen Aussagen in JavaScript üben wir natürlich nicht nur zum Spaß. Wenn wir Programme schreiben, dann wollen wir meistens den Programmablauf abhängig von den Daten machen, um die es geht. Je nachdem, was der Benutzer eingibt oder worauf er klickt, soll das Skript unterschiedliche Aufgaben erfüllen. In diesem und dem nächsten Abschnitt lernen wir zwei Möglichkeiten kennen, wie man bestimmte Teile des Codes nur unter klar definierten Bedingungen ausführen lässt.

if-Anweisungen

Die einfachste Formulierung einer Bedingung ist von der Form "Wenn ..., dann ...". Dies lässt sich in JavaScript direkt umsetzen. Betrachte das folgende Codebeispiel:

<script>
var alter = parseInt(prompt("Wie alt bist du?"));
if ( alter < 18 ) {
	alert("Hier findest du Musik mit jugendfreien Songtexten!");
}
</script>

Bei der Eingabe des Alters des Benutzers kommt zunächst die JavaScript-Funktion parseInt() zum Einsatz. Sie wandelt die als Zeichenkette interpretierte Benutzereingabe in den Datentyp number um, so dass die Zahl dann mit anderen Zahlen verglichen werden kann.
Direkt im Anschluss wird dann geprüft, ob das Alter kleiner als 18 ist. Die Bedingung steht in runden Klammern nach dem JavaScript-Schlüsselwort if. Die Anweisungen, die nur im Fall der erfüllten Bedingungen ausgeführt werden sollen, stehen dann innerhalb von geschweiften Klammern. In dem Spezialfall von oben, in dem nur eine Anweisung ausgeführt werden soll, könnte man die geschweiften Klammern auch weg lassen, da diese dafür gedacht sind, einen Block von Anweisungen zusammenzufassen. Aus Gründen der Übersichtlichkeit lohnt es sich aber trotzdem manchmal, die geschweiften Klammern auch bei einem einzelnen Befehl zu benutzen.
Die Zeilenumbrüche und die Einrückung des auszuführenden Befehls dienen ausschließlich dazu, den Code leserlich zu halten. Man sollte auf jeden Fall darauf achten, sich einen bestimmten Stil beim Einrücken anzugewöhnen, damit man sich später auch in längeren Programmen noch gut zurecht findet.

if-else-Anweisungen

In Situationen aus der Praxis möchte man häufig nicht nur im Fall der erfüllten Bedingung bestimmte Befehle ausgeführt haben, sondern auch, wenn die Bedingung nicht erfüllt ist, nur dass dann eben andere Befehle zum Zug kommen sollen. Wir könnten obiges Beispiel etwa wie folgt ergänzen:

<script>
var alter = parseInt(prompt("Wie alt bist du?"));
if ( alter < 18 ) {
	alert("Hier findest du Musik mit jugendfreien Songtexten!");
}
if ( alter >= 18 ) {
	alert("Hier findest du Musik für jede Stimmung!");
}
</script>

Hier haben wir einfach die gegensätzliche Bedingung zur ersten Aussage formuliert und damit sichergestellt, dass nur einer der beiden Codeblöcke ausgeführt wird. Allerdings hat diese Vorgehensweise zwei Nachteile. Zum Einen haben wir die zusätzliche Tipparbeit beim erneuten Formulieren der Bedingung und zum Anderen muss der JavaScript-Interpreter beim Ausführen des Programms erneut eine Bedingung überprüfen, was ihn Zeit kostet. Um das Ganze abzukürzen, gibt es in JavaScript das Schlüsselwort else, womit sich noch ein "sonst-Fall" hinzufügen lässt:

<script>
var alter = parseInt(prompt("Wie alt bist du?"));
if ( alter < 18 ) {
	alert("Hier findest du Musik mit jugendfreien Songtexten!");
}
else {
	alert("Hier findest du Musik für jede Stimmung!");
}
</script>

Der Codeblock in den geschweiften Klammern nach else wird genau dann ausgeführt, wenn die vorhergehende if-Bedingung nicht erfüllt ist.

Verkettete if-else-Anweisungen

Das ist uns aber noch nicht genug und wir möchten den Altersbereich ab 18 weiter unterteilen. Dafür können wir praktischerweise einfach die if-else-Anweisungen verketten.

<script>
var alter = parseInt(prompt("Wie alt bist du?"));
if ( alter < 18 ) {
	alert("Hier findest du Musik mit jugendfreien Songtexten!");
}
else if ( alter > 80 ) {
	alert("Hier findest du Musik für junggebliebene Senioren!");
}
else {
	alert("Hier findest du Musik für jede Stimmung!");
}
</script>

Hier wird im Fall der Nichterfüllung der ersten Bedingung eine weitere Bedingung überprüft und gegebenenfalls der entsprechende Code ausgeführt. Nur wenn auch diese Bedingung nicht erfüllt ist, kommt der letzte else-Block zur Ausführung.
Unabhängig von dieser Verkettung ist auch eine Verschachtelung von if-else-Anweisungen möglich. Innerhalb der Codeblöcke dürfen nämlich weitere Bedingungen mit if geprüft werden. Auf diese Weise lassen sich auch sehr komplexe Fallunterscheidungen durchführen.

Aufgabe

Schreibe ein Programm, das den Benutzer zur Eingabe einer gewissen Information auffordert. Führe dann eine Fallunterscheidung (am besten mit mehr als zwei Fällen) durch und lass das Programm auf unterschiedliche Eingaben unterschiedlich reagieren.