4. JavaScript - Bedingte Ausführung

4.1. if-else-Unterscheidung
4.2. switch-case-default-Unterscheidung
4.3. Vereinfachung

4.1. if-else-Unterscheidung

Die einfachste Art, die Ausführung von Befehlen von Bedingungen abhängig zu machen, ist die Fallunterscheidung mittels der Schlüsselwörter if und else. Diese Fallunterscheidung hat die Form if (Bedingung) Befehl1; else Befehl2; oder if (Bedingung) {Block1} else {Block2}
Wenn die Bedingung zutrifft, wird Befehl1 beziehungsweise Block1 ausgeführt, andernfalls Befehl2 beziehungsweise Block2. Die Notation ist also identisch mit C und Java.
if (Math.abs(i)>1000)
{
  i=0;
  a=0;
  b=0;
  answer="i not in valid range";
}
else
{
  a=i*i;
  b=i*i*i;
  answer="a=i*i="+a+" b=i*i*i="+b;
}

Im Beispiel wird abgefragt, ob der Absolutwert von i größer als 1000 ist. Ist dies der Fall, werden die Variablen a,b,c auf 0 gesetzt und der Antwortsatz erhält die Nachricht, daß i außerhalb des gültigen Wertebereiches liegt. Andernfalls wird a als Quadrat von i berechnet, dann b als dritte Potenz von i und zum Schluß erhält der Antwortsatz die Ausgabe der beiden Werte.
Input:

Output:

Soll das Programm nur für den Fall, daß eine Bedingung zutrifft, zusätzliche Befehle ausführen, kann man den else-Teil auch komplett weglassen.
if (Math.abs(i)>1000)
{
  i=0;
  alert("i not in valid range");
}

In diesem Beispiel wird für den Fall, daß der Absolutwert von i größer als 1000 ist, i auf 0 gesetzt und die Warnung ausgegeben, daß es sich nicht im gültigen Bereich befindet.

4.2. switch-case-default-Unterscheidung

Es besteht jedoch außerdem die Möglichkeit, nicht nur nach zwei, sondern gleich nach mehreren Fällen zu unterscheiden. Genau wie in C und Java sind dafür die Schlüsselwörter switch, case und default reserviert.
switch (i)
{
  case 1:
    answer="first";
    break;
  case 2:
    answer="second";
    break;
  case 3:
    answer="third";
    break;
  case 4:
  case 5:
  case 6:
  case 7:
    answer=""+i+"-th";
    break;
  default:
    answer="too much";
}

In diesem Beispiel werden Zahlen unterschieden. Bei i=1 wird answer auf "first" gesetzt. Mit break wird die Fallunterscheidung verlassen. Für i=2 lautet die Antwort "second", für i=3 lautet sie "third". Durch Weglassen des Wortes break werden die Fälle, daß i die Werte von 4 bis sieben annimmt, zusammen gebunden. Die Antwort lautet dann "4-th","5-th","6-th" oder "7-th". Für jeden Anderen Fall lautet die Antwort "too much". Soll kein "Ansonsten"-Fall bearbeitet werden, kann der ganze default-Bereich auch einfach weggelassen werden.
Achtung! Das reservierte Wort case stellt lediglich einen sogenannten Einsprungpunkt dar. Die Bearbeitung des Blockes wird nicht am Anfang des nächsten Einsprungpunktes beendet, sondern der Programmierer muß sich darum mittels des Schlüsselwortes break selbst kümmern. Das Weglassen des Wortes break bietet somit die Möglichkeit, mehrere Fälle zusammenzubinden. Zumindest sollte das so sein, Der KDE-Browser Konqueror stellt in der Version 1.9.8 jedoch eine kleine unrühmliche Ausnahme dar, aus welchen Gründen auch immer. Die getestete höhere Versionen meistert das aber ganz sauber. Netscape, Konqueror 2.2.0, Opera und Internet Explorer arbeiten an dieser Stelle wie spezifiziert.
Input:

Output:


4.3. Vereinfachung

Es gibt zur entweder-oder-Abfrage eine alternative, verkürzte Form.
Variable = (Bedingung) ? Wert1 : Wert2;
Für den Fall, daß die Bedingung eingehalten wird, wird die Variable auf Wert1 gesetzt, andernfalls auf Wert 2.
Beispiel:
answer= (Math.abs(i)>1000) ? "not in valid range" : "in valid range";


Autor: Ulrich Kritzner