JavaScript/Operatoren/ternärer Operator

Aus SELFHTML-Wiki
< JavaScript‎ | Operatoren(Weitergeleitet von Bedingter Operator)
Wechseln zu: Navigation, Suche

Der bedingte Operator ?: ist ein Operator in JavaScript, der eine kürzere Alternative zu bedingten Anweisungen darstellt.

Er wird oft auch als ternärer Operator bezeichnet, was irreführend ist, weil „ternär“ auf die Anzahl seiner Operanden hinweist und nicht auf das, was er tut. Aber da es sich bei ?: um den einzigen ternären Operator handelt, den die Sprache besitzt, weiß trotzdem jeder, was gemeint ist.

Der bedingte Operator kombiniert drei Operanden durch die Zeichen ? und :

Syntax

Bedingung ? Ausdruck1 : Ausdruck2

  • Bedingung: Ausdruck, der als wahr oder falsch ausgewertet werden kann.
  • Ausdruck1, Ausdruck2: Ausdrücke mit Werten eines beliebigen Typs.

Je nachdem, ob der Wert des Bedingungsoperanden wahr (oder wahr-artig) ist oder nicht, wird Ausdruck1 oder Ausdruck2 ausgewertet, um das Ergebnis des bedingten Operators zu bestimmen. Der jeweils andere Ausdruck wird dann ignoriert und nicht ausgewertet.

Beispiel
  function fuehrendeNull(zahl) {
    zahl = (zahl < 10 ? '0' : '' ) + zahl;  
    return zahl;
  }
In der Funktion fuehrendeNull() wird eine Zahl mittels des ternären Operators ? : überprüft, ob sie kleiner als 10 ist. Falls diese Bedingung zutrifft, wird ihr der Wert vor dem Doppelpunkt (die 0) vorangestellt. Falls nicht, wird der hintere Wert verwendet, der aus einem leeren String besteht.

Dass derjenige Ausdruck, der nicht benötigt wird, ignoriert wird, ist eine wichtige Tatsache.

Bedingter Operator zum Test auf 0
  let mittelwert = anzahl > 0 ? summe / anzahl : 0;
In dieser Mittelwertberechnung wird zuerst geprüft, ob überhaupt Werte vorhanden sind. Wenn ja, wird die Summe durch die Anzahl geteilt, was den Mittelwert ergibt. Wenn nicht, wird der Mittelwert auf 0 gesetzt. Wenn im Fall anzahl = 0 der erste Ausdruck, summe / anzahl, nicht ignoriert würde, ergäbe sich eine Division durch 0 und damit ein Programmabbruch.

Siehe auch

Weblinks