?- oder Ternary-Operator

Ein zwei oder drei Operatoren

Javascript Operationen agieren mit Operatoren, die wichtigsten sind +, -, /, =, * und %. Operatoren lassen sich drei Typen zuordnen:

Unäre (Unary) Operatoren, auch einstellige Verknüpfung
Ein Operand vor oder nach dem Operator
Verneinung oder Negation: !N, x2
Zweistellige (Binary) Operatoren
Zwei Operatoren: einer vor und einer nach dem Operator
Addition a + b
Dreifach (Ternary) Operatoren
Drei Operatoren, Kurzform einer if-then-else Abfrage
t = alter < 16 ? "10€" : "50€"

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;

Bevor man die Ternary-Schreibweise wirklich intus hat, kann man den Ausdruck übersichtlich strukturieren:

tour.finished = 
	tour.walked > 10 
	? "Tour erfolgreich bewältigt" 
	: "noch nicht weit genug gelaufen";

Das Ergebnis der Bedingung – im Beispiel tour.walked > 10 – sollte true oder false sein, das Ergebnis ist der String "Tour erfolgreich bewältigt" oder "noch nicht weit genug gelaufen".

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.


Deprecated: Directive 'allow_url_include' is deprecated in Unknown on line 0