Bedingter (ternärer) Operator

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)

Siehe auch

Schlagwörter des Dokuments und Mitwirkende

Schlagwörter: 
 Mitwirkende an dieser Seite: JWPapi, schlagi123, chauthai, terrluhr
 Zuletzt aktualisiert von: JWPapi,