?- oder Ternary-Operator

Javascript Ternary: Bedingte Zuweisung oder Bedingter Operator

Der ?: Operator (Ternary- oder Dreifach-Operator) ist eine kompakte Schreibweise für eine bedingte Zuweisung, wenn if-then-else zu umständlich wird.

Auch wenn der ?-Operator als kurze if-then-Anweisung eigesetzt wird: Der Ternary-Operator ist die bedingte Zuweisung eines Werts an eine Variable. if-then hingegen ist Flußkontrolle.

Ternary wird bei einfachen if then else Bedingungen eingesetzt, wenn das Ergebnis der Bedingung true oder false ist.

if ( alter < 18) {       // Bedingung
   serveApfelsaft ();    // true
} else {
   serveWein();          // false
}

Anstelle der langatmigen if then else-Anweisung tritt die bedingte Zuweisung durch den Ternary-Operator.

Der Ternary-Operator hat drei Operanden: Der erste Operand ist die Bedingung, der zweite Operand wird zurückgegeben, wenn die Bedingung true liefert und der dritte Operand wird zurückgegeben, wenn die Bedingung false liefert.

            Operand 1    Operand 2   Operand 3
               |            |           |
let foo = (Bedingung) ? wenn true : wenn false;

Das Ergebnis der Bedingung sollte true oder false sein.

Beispiel für Ternary

Anstelle von

let member = document.getElementsByName("member");
let ticket;
for (let i=0; i<2; i++) {
   member[i].onclick = function () {
      if (this.value === "1") {
         ticket = "€ 10";
      } else {
         ticket = "€ 50";
      }
   }
}

reicht eine Zeile:

                     +-- Bedingung
                     |
ticket = (this.value === "1") ? "€ 10" : "€ 50";
                                   ^        ^
                                   |        |
            Bedingung trifft zu ---+        +--- Bindung trifft nicht zu 

Das liest sich: Wenn Mitglied gewählt ist, ist kostet das Ticket € 10 und sonst € 50. Der Ternary-Operator spart bei einfachen if…else-Anweisungen ein paar Zeilen und das Erzeugen einer neuen Variablen.

Ternary sinnvoll oder nicht sinnvoll?

Die einen sagen, ein Ternary-Operator anstelle von if then else trägt zur Übersichtlichkeit und Lesbarkeit des Skriptcodes bei, weil Anweisungen in einer Zeile besser nachvollziehbar sind. Die anderen sagen, if-then-Statements sind leichter zu lesen und liefern beim Kompilieren den effizienteren Code.

Sinnvoll ist Ternary u.U. in einfachen Booleschen Abfragen, in denen er ein oder zwei Zeilen Scriptcode einspart. Da sind wir auf einem homöopathischen Level der Optimierung.

Javascript Ternary: Bedingte Zuweisung oder Bedingter Operator ?