Der bedingte (ternäre) Operator ist der einzige Operator in JavaScript, welcher drei Operanden annimmt. Er wird häufig genutzt, um if-Anweisungen
abzukürzen.
Syntax
Bedingung ? Ausdruck1: Ausdruck2
Parameter
- Bedingung
- Ein Ausdruck, der als wahr oder falsch ausgewertet werden kann.
- Ausdruck1, Ausdruck2
- Ausdrücke mit Werten eines beliebigen Typs.
Beschreibung
Ergibt die Bedingung "true", wird vom Operator der Ausdruck1 zurückgegeben. Andernfalls gibt er Ausdruck2 zurück. Um z.B. verschiedene Ausgaben abhängig vom Wert der "isMember"-Variable zurückzugeben, könnte folgende Anweisung verwendet werden:
"The fee is " + (isMember ? "$2.00" : "$10.00")
Der vom ternären Operator zurückgegebene Wert kann auch Variablen zugewiesen werden:
var elvisLives = Math.PI > 4 ? "Yep" : "Nope";
Mehrere ternäre Auswertungen hintereinander sind ebenfalls möglich (Beachte: der Bedingte Operator ist rechtsassoziativ):
var firstCheck = false, secondCheck = false, access = firstCheck ? "Access denied" : secondCheck ? "Access denied" : "Access granted"; console.log( access ); // logt "Access granted"
Es ist ebenfalls möglich den ternären Operator alleinstehen zu benutzen, um verschiedene Operationen auszuführen:
var stop = false, age = 16; age > 18 ? location.assign("continue.html") : stop = true;
Sie können auch mehr als eine Operation pro Fall ausführen. In diesem Fall werden die Operationen mit einem Komma getrennt und geklammert:
var stop = false, age = 23; age > 18 ? ( alert("OK, you can go."), location.assign("continue.html") ) : ( stop = true, alert("Sorry, you are much too young!") );
Während einer Zuweisung an eine Variable können Sie ebenfalls mehrere Operationen ausführen. In diesem Fall ergibt der letzte Ausdruck innerhalb der Klammer den zuzuweisenden Wert.
var age = 16; var url = age > 18 ? ( alert("OK, you can go."), // alert liefert "undefined" zurück, wird aber ignoriert // weil es nicht der letzte Ausdruck in der Klammer ist. "continue.html" // dieser Wert wird zugewiesen, wenn der //Wert > 18 ist. ) : ( alert("You are much too young!"), alert("Sorry :-("), // etc. etc. "stop.html" // dieser Wert wird zugewiesen wenn "age" <= 18 ist; location.assign(url); // "stop.html"
Spezifikationen
Spezifikation | Status | Kommentar |
---|---|---|
ECMAScript 2017 Draft (ECMA-262) Die Definition von 'Conditional Operator' in dieser Spezifikation. |
Entwurf | |
ECMAScript 2015 (6th Edition, ECMA-262) Die Definition von 'Conditional Operator' in dieser Spezifikation. |
Standard | |
ECMAScript 5.1 (ECMA-262) Die Definition von 'The conditional operator' in dieser Spezifikation. |
Standard | |
ECMAScript 1st Edition (ECMA-262) Die Definition von 'The conditional operator' in dieser Spezifikation. |
Standard | erstmalige Definition. implementiert in JavaScript 1.0. |
Browserkompatibilität
Funktion | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
grundlegende Unterstützung | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |
Funktioin | Android | Chrome für Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Basic support | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) | (Ja) |