Bedingte Anweisungen

Aktualisiert: November 2007

Standardmäßig werden Anweisungen in JScript-Code sequenziell ausgeführt. Unter bestimmten Bedingungen empfiehlt es sich jedoch, die logische Reihenfolge zu ändern und die Steuerung an einen nicht sequenziellen Teil des Codes zu übergeben. Eine Steuerstruktur übergibt die Programmsteuerung an eine von zwei Stellen, je nachdem, ob eine bedingte Anweisung true oder false ergibt. Jeder Ausdruck, der in einen booleschen Wert umgewandelt werden kann, darf in einer bedingten Anweisung verwendet werden. Im Folgenden werden einige häufig verwendete bedingte Anweisungen erläutert.

Gleichheit und strikte Gleichheit (Identität)

Mit dem Gleichheitsoperator (==) kann in einer Bedingungsanweisung überprüft werden, ob die beiden an den Operator übergebenen Argumente denselben Wert haben, wobei ggf. Typkonvertierungen durchgeführt werden. Der Identitätsoperator (===) vergleicht sowohl den Wert als auch den Typ zweier Ausdrücke. Nur wenn beide Operanden im Wert und im Datentyp übereinstimmen, wird true zurückgegeben. Der Identitätsoperator unterscheidet nicht zwischen den verschiedenen numerischen Datentypen.

Im folgenden JScript-Code wird ein Gleichheitsoperator mit einer if-Anweisung verknüpft und darin verwendet. Weitere Informationen finden Sie unter Steuerungsstrukturen.

function is2000(x) : String {
   // Check if the value of x can be converted to 2000.
   if (x == 2000) {
      // Check is the value of x is strictly equal to 2000.
      if(x === 2000)
         print("The argument is number 2000.");
      else
         print("The argument can be converted to 2000.");
   } else {
      print("The argument is not 2000.");
   }
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);

Ausgabe dieses Codes:

Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.

Ungleichheit und strikte Ungleichheit

Der Ungleichheitsoperator (!=) gibt als Ergebnis den gegenteiligen Wert des Gleichheitsoperators zurück. Wenn die Operanden denselben Wert besitzen, gibt der Ungleichheitsoperator false zurück, andernfalls true. Entsprechend gibt der strikte Ungleichheitsoperator (!=) als Ergebnis den gegenteiligen Wert des strikten Gleichheitsoperators (Identitätsoperators) zurück.

Betrachten Sie das folgende JScript-Codebeispiel, in dem eine while-Schleife mit dem Ungleichheitsoperator gesteuert wird. Weitere Informationen finden Sie unter Steuerungsstrukturen.

var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) { 
   print(counter++);
}

Ausgabe dieses Codes:

1
2
3
4

Vergleich

Der Gleichheitsoperator und der Ungleichheitsoperator können verwendet werden, wenn Daten einen bestimmten Wert haben. Es gibt jedoch Situationen, in denen überprüft werden muss, ob ein Wert in einem bestimmten Bereich liegt. In diesen Fällen können Sie die relationalen Operatoren verwenden: kleiner als (<), größer als (>), kleiner oder gleich (<=) und größer oder gleich (>=).

if(tempInCelsius < 0)
   print("Water is frozen.")
else if(tempInCelsius > 100)
   print("Water is vapor.");
else
   print("Water is liquid.);

Kurzschlussauswertung

Wenn Sie mehrere Bedingungen zusammen überprüfen möchten und davon ausgehen, dass eine dieser Bedingungen mit größerer Wahrscheinlichkeit erfüllt bzw. nicht erfüllt wird als die anderen, können Sie mithilfe der so genannten Kurzschlussauswertung die Ausführung des Skripts beschleunigen und Nebeneffekte verhindern, die möglicherweise zu Fehlern führen. Wenn JScript einen logischen Ausdruck auswertet, werden nur so viele Unterausdrücke ausgewertet, wie zur Erzielung eines Ergebnisses erforderlich sind.

Der logische AND-Operator (&&) wertet den linken Ausdruck aus, der zuerst an ihne übergeben wird. Wenn dieser Ausdruck false ergibt, kann das Ergebnis des logischen AND-Operators nicht true sein, ungeachtet dessen, welchen Wert der rechte Ausdruck hat. Daher wird der rechte Ausdruck nicht ausgewertet.

Im Ausdruck ((x == 123) && (y == 42)) überprüft JScript z. B. zuerst, ob x gleich 123 ist. Ist dies nicht der Fall, wird niemals auf y getestet, und JScript gibt den Wert false zurück.

Ähnlich verhält es sich mit dem logischen OR-Operator (||). Zuerst wird der linke Ausdruck ausgewertet, und wenn dieser true ergibt, wird der rechte Ausdruck niemals ausgewertet.

Die Kurzschlussauswertung ist sehr effizient, wenn die zu überprüfenden Bedingungen die Ausführung von Funktionsaufrufen oder andere komplexe Ausdrücke beinhalten. Damit ein Skript so effizient wie möglich ausgeführt wird, setzen Sie beim logischen OR-Operator die Bedingungen, die am wahrscheinlichsten true ergeben, an die erste Stelle. Beim logischen AND-Operator setzen Sie diejenigen Bedingungen an die erste Stelle, die größter Wahrscheinlichkeit falsesind.

Das folgende Beispiel veranschaulicht die Vorteile, die sich ergeben, wenn Sie Skripts auf diese Weise entwerfen: Wenn runfirst()false zurückgibt, wird runsecond() im folgenden Beispiel nicht ausgeführt.

if ((runfirst() == 0) || (runsecond() == 0)) {
   // some code
}

Ein weiteres Beispiel für die Vorteile dieser Vorgehensweise: runsecond() wird im folgenden Beispiel nicht ausgeführt, wenn der Rückgabewert von runfirst()false lautet.

if ((x == 0) && (y/x == 5)) {
   // some code
}

Sonstige

Jeder Ausdruck, der in einen booleschen Wert umgewandelt werden kann, darf in einer Bedingungsanweisung verwendet werden. Beispielsweise können Sie einen Ausdruck wie den folgenden verwenden:

if (x = y + z) // This may not do what you expect - see below!

Beachten Sie, dass der obige Code nicht überprüft, ob x gleich y + z ist, da in der Syntax nur ein einziges Gleichheitszeichen (Zuweisung) verwendet wird. Stattdessen wird mit dem oben angegebenen Code der Variablen x der Wert von y + z zugewiesen und anschließend überprüft, ob das Ergebnis des gesamten Ausdrucks (der Wert von x) in den Wert true konvertiert werden kann. Um zu überprüfen, ob x gleich y + z ist, verwenden Sie den folgenden Code.

if (x == y + z) // This is different from the code above!

Siehe auch

Konzepte

Boolesche Daten

Weitere Ressourcen

Bedingte Strukturen in JScript

JScript-Datentypen

JScript-Referenz

Operatoren (JScript)