Bedingungen
Bedingungen in Programmiersprachen erlauben es, bestimmte Fälle abzuprüfen, z. B. ob eine Variable einen bestimmten
Wert hat. JavaScript bietet, wie in vielen anderen Sprachen auch, zwei Möglichkeiten: if
(einfache Verzweigung)
und switch
-case
(mehrfache Verzweigung).
Einfache Verzweigung
Eine einfache Verzweigung dient in erster Linie dafür, nur einen bestimmten Fall abzuprüfen. Hierfür notieren wir als
erstes das Schlüsselwort if
gefolgt von einem runden Klammernpaar. Zwischen dem Schlüsselwort und dem Klammernpaar
wird meistens noch ein Leerzeichen angegeben. Dieses dient jedoch nur zur besseren Lesbarkeit. Ein Fall stellt dabei immer einen
Block dar, weshalb nach der schließenden runden Klammer ein geschweiftes Klammernpaar notiert wird. Innerhalb des Blocks werden
nun Anweisungen notiert. Dies können normale Statements aber auch weitere Verzweigungen sein. Eine einfache Verzweigung kann
wie folgt aussehen:
if (BEDINGUNG) { // Anweisungen }
An welcher Stelle die geschweiften Klammern gesetzt werden, wirkt sich nicht auf dessen Funktion aus. Folgender Aufbau (im Vergleich zu oben) wäre ebenfalls möglich:
if (BEDINGUNG) { // Anweisungen }
Wichtig: Es empfiehlt sich, für einen der zwei „Stile“ zu entscheiden und diesen dann im kompletten Skript bzw. auf der kompletten Website auch durchgängig zu verwenden.
Gibt es nur ein Statement, welches innerhalb des Blocks notiert werden soll, so können die geschweiften Klammern auch weggelassen werden.
if (BEDINGUNG) // Anweisung
Zusätzlich ist es mit solchen Verzweigungen (öfters auch einfach nur als Abfrage bezeichnet) auch möglich, noch zusätzlich einen
Code-Block zu notieren, für den Fall, dass die Bedingung nicht zutrifft. Hierfür wird nach dem if
-Block das
Schlüsselwort else
und ein weiterer Block notiert. Auch hier können gegebenenfalls die Klammern weggelassen werden.
if (BEDINGUNG) { // Anweisungen falls Bedingung zutrifft } else { // Anweisungen falls Bedingung zutrifft }
Die angegebene Bedingung muss immer einen Wert vom Typ Boolean
sein. Wollen wir überprüfen, ob eine Variable den Wert
true
enthält, so müssen wir also lediglich den Variablennamen notieren. Möchten wir prüfen, ob die Variable den Wert
false
enthält, so notieren wir den Variablennamen mit einem vorangestellten Ausrufezeichen (Negierung).
if (computerAngeschaltet) { // Anweisungen }
JavaScript bietet noch einige sogenannte Operatoren, die für den Vergleich genutzt werden können. Mit Hilfe dieser
Vergleichs-Operatoren ist es möglich, einen Wert vom Typ Boolean
„zu erzeugen“. Die untenstehende Tabelle zeigt
die in JavaScript verfügbaren Vergleichs-Operatoren mit den Beispielwerten a und b:
a == b | Wert a ist gleich b |
---|---|
a === b | Wert und Typ a ist gleich b |
a != b | Wert a ist ungleich b |
a !== b | Wert und Typ a ist ungleich b |
a > b | Wert a ist größer als b |
a >= b | Wert a ist größer als oder gleich b |
a < b | Wert a ist kleiner als b |
a <= b | Wert a ist kleiner als oder gleich b |
Wichtig: JavaScript kann beim Vergleich zwischen Wert und Wert und Typ unterscheiden. So ergibt die Bedingung "123" == 123
den Wert true
, wohingegen die Bedingung "123" === 123
unwahr ist. Dieses Schema gilt auch für !=
und !==
. Dies kommt daher, dass bei der Bedingung "123" == 123
eine automatische Typkonvertierung durchgeführt wird.
Dies passiert z. B. auch dann, wenn Sie der Funktion alert()
eine Zahl übergeben: es erfolgt eine automatische Konvertierung
in eine Zeichenkette.
Des Weiteren sollte beachtet werden, dass ein Vergleich von Objekten nur dann funktioniert, wenn es sich um das selbe Objekt handelt, nicht
aber, wenn es sich um ein Objekt mit gleichem Inhalt (dazu später mehr) handelt.
Hier nun das erste Beispiel mit einem Meldungsfenster:
if (confirm("Bitte klicken Sie auf einen der Buttons!")) document.write("Sie haben OK geklickt!"); else document.write("Sie haben Abbrechen geklickt!");
Übrigens: Natürlich können wir auch mehrere Bedingungen verknüpfen. Hierfür gibt es das logische Und &&
und das
logische Oder ||
. Bei der Kombination von Und und Oder empfiehlt es sich bzw. ist es notwendig, mit weiteren runden Klammernpaaren
zu arbeiten.
if (BEDINGUNGA && BEDINGUNGB) // Anweisung
Wie bereits oben erwähnt ist es möglich, Bedingungen zu verschachteln. Eine Verzweigung die im else
-Zweig verschachtelt
wurde, könnte dann z. B. so aussehen:
if (confirm("Bitte klicken Sie auf einen der Buttons!")) document.write("Sie haben auf OK geklickt!"); else { if (confirm("Bitte klicken Sie nochmals auf einen der Buttons!")) document.write("Sie haben beim 1. Mal auf Abbrechen und beim 2. Mal OK geklickt!"); else document.write("Sie haben beides Mal auf Abbrechen geklickt!"); }
Das obige Beispiel kann jedoch in JavaScript verkürzt werden. Wenn sich die weitere Verschachtelung im else
-Zweig befindet, können
wir nämlich an Stelle des Schlüsselworts else
das Schlüsselwort else if
verwenden, hinter welchem eine weitere
Bedingung notiert wird. Diese Bedingung wird natürlich nur geprüft, wenn die erste Bedingung nicht zutrifft. Das folgende Beispiel
zeigt, wie der obige Code mittels else if
ersetzt und verkürzt werden kann:
if (confirm("Bitte klicken Sie auf einen der Buttons!")) document.write("Sie haben auf OK geklickt!"); else if (confirm("Bitte klicken Sie nochmals auf einen der Buttons!")) document.write("Sie haben beim 1. Mal auf Abbrechen und beim 2. Mal OK geklickt!"); else document.write("Sie haben beides Mal auf Abbrechen geklickt!");
Wichtig: Natürlich ist auch die Verwendung mehrerer else if
-Bedingungen möglich. Es gilt lediglich zu beachten, dass
sofern ein einfacher else
-Zweig vorhanden ist, dieser immer als letztes notiert werden muss.
Übrigens: In JavaScript gibt es die Möglichkeit, einfache Verzweigungen einzeilig darzustellen. Diese Methode kann nur dann verwendet
werden, wenn sowohl im if
- als auch im else
-Zweig ein Statement notiert wird, welches jeweils einen Wert zurückgibt.
Das Resultat kann dann z. B. einer Variablen zugewiesen werden. Um diese Kurzdarstellung zu verwenden, notieren wir die Bedingung
(vorzugsweise in runden Klammern) gefolgt von einem Fragezeichen ?
. Nun folgt das Statement bzw. der Wert falls die Bedingung
zutrifft. Als nächstes notieren wir einen Doppelpunkt :
gefolgt von dem Statement oder dem Wert für den Fall, dass die Bedingung
nicht zutrifft. Dies sieht dann z. B. so aus:
var wert = (a > b) ? "a ist größer als b" : "a ist nicht größer als b";
Mehrfache Verzweigung
Mehrfache Verzweigungen werden in JavaScript mit switch
-case
realisiert. Um eine solche Verzweigung aufzustellen,
benötigen wir das Schlüsselwort switch
und einen Wert der geprüft werden soll. Dieser muss dafür in einem runden Klammernpaar
notiert werden. Als nächstes notieren wir einen Block mit geschweiften Klammern. Innerhalb des Blocks werden nun die verschiedenen Fälle
angegeben. Hierfür notieren wir das Schlüsselwort case
und anschließend den Wert, welcher mit dem oben angegebenen Wert verglichen
werden soll, gefolgt von einem Doppelpunkt :
. Nun notieren wir einen Zeilenumbruch und darunter unsere auszuführende Statements
(hier wird kein Block mit geschweiften Klammern benötigt). Als letzte Anweisung muss das Schlüsselwort break
(gefolgt von
einem Semikolon) notiert werden. Ähnlich wie bei if
-else
gibt es auch hier die Möglichkeit, den Fall abzufangen,
wenn keine der aufgelisteten Bedingungen zutrifft. Hier nutzen wir an Stelle des case
-Schlüsselworts default
.
Das folgende Beispiel soll diesen Text verdeutlichen:
var monat = 3; switch (monat) { case 1: document.write("Januar"); break; case 2: document.write("Februar"); break; case 3: document.write("März"); break; case 4: document.write("April"); break; case 5: document.write("Mai"); break; case 6: document.write("Juni"); break; case 7: document.write("Juli"); break; case 8: document.write("August"); break; case 9: document.write("September"); break; case 10: document.write("Oktober"); break; case 11: document.write("November"); break; case 12: document.write("Dezember"); break; default: document.write("Ungültiger Monat!"); break; }
switch
-case
ist zum Überprüfen eines Wertes mit verschiedenen anderen einzelnen Werten gedacht. Die Verwendung von
Wertebereichen ist zwar in JavaScript realisierbar, jedoch sollte darauf komplett verzichtet werden, da dies als schlechter
Programmierstil gilt. Wir gehen darauf hier nicht weiter ein. Verwenden Sie für Wertebereiche daher if
und else
.