Lothar: Kurzschreibweise von if

Guten Morgen wünsche ich.
Kann mir jemand die Kurzschreibweise einer if Abfrage erklären?
Z.B.

var IE = document.all ? true : false;

  1. Guten Morgen wünsche ich.

    Morgen!

    Kann mir jemand die Kurzschreibweise einer if Abfrage erklären?
    Z.B.

    var IE = document.all ? true : false;

    var IE ist = 'true' wenn 'document.all' (ungleich null ist), sonst 'false'.

    1. Guten Morgen wünsche ich.

      Morgen!

      Kann mir jemand die Kurzschreibweise einer if Abfrage erklären?
      Z.B.

      var IE = document.all ? true : false;
      var IE ist = 'true' wenn 'document.all' (ungleich null ist), sonst 'false'.

      Danke

  2. Guten Morgen wünsche ich.
    Kann mir jemand die Kurzschreibweise einer if Abfrage erklären?
    Z.B.

    var IE = document.all ? true : false;

    Mal aggesehen, dass Implizierung der Variabelnnamen so nicht stimmt, da auch Opera hier ein true liefert ist diese Schreibweise in diesem Falle nicht die kürzeste.

    var IE = !!document.all;

    Allgemeine (so steht's sicher auch in selfhtml)

    Ergebniss = Bedingung ? "Wert wenn Bedingung wahr ist" : "Wert wenn Bedingung falsch ist"

    Struppi.

  3. Moin,

    var IE = document.all ? true : false;

    abgesehen davon, dass dieses Beispiel aus mehreren Gründen unsinnig ist[*], und abgesehen auch davon, dass du ja mittlerweile schon eine Erklärung für den "ternären Operator", auch "Fragezeichen-Operator" genannt, bekommen hast: Worin liegt der Sinn dieses Konstrukts, was ist der Vorteil gegenüber einer if/else-Konstruktion?

    Solange ich als Ergebnis nur true oder false bekommen möchte, ist der Einsatz des "?"-Operators tatsächlich Unsinn, denn dazu würde der Ausdruck vor dem "?" schon reichen.
    Seine Stärken spielt der "?"-Operator aus, wenn er _innerhalb_ eines anderen Ausdrucks steht. Denn eine if-Anweisung führt abhängig von einer Bedingung eine _Anweisung_ aus, während der "?"-Operator einen _Ausdruck_ auswertet und ein Ergebnis liefert.

    Beispiel: In einem Spiel soll die Meldung "Sie haben n Karten abgelegt" ausgegeben werden. Falls n=1 ist, soll der Wortlaut aber "1 Karte" sein, also in der Einzahl. Anstatt eines umständlichen if-Statements kann man nun sehr elegant schreiben (angenommen, "+" sei der Stringverkettungs-Operator):

    ausgabe = "Sie haben " + n + " " + (n==1 ? "Karte" : "Karten") + " abgelegt.";

    So long,
     Martin

    [*] erstens weil die Existenz von document.all nicht unbedingt einen IE identifiziert, zweitens weil "document.all" in einem boolschen Kontext selbst schon die Werte true oder false so liefert, wie sie der im Beispiel formulierte Code auch ergibt.

    --
    Time's an illusion. Lunchtime doubly so.
      Douglas Adams, "The Hitchhiker's Guide To The Galaxy"
    1. Hallo Martin,

      [..], was ist der Vorteil gegenüber einer if/else-Konstruktion?

      Ich finde

      $foo = ($bar == 42) ? 'Mittwoch' : 'Freitag';

      wesentlich eleganter, intuitiver und kürzer als

      if($bar == 42) {  
         $foo = 'Mittwoch';  
      } else {  
         $foo = 'Freitag';  
      }
      

      Der vom OP gezeigte Code ist natürlich nicht sinnvoll.

      Servus,
      Flo