Paul: eine Zeile Javascript

Moin, kann mir jemand die folgende Zeile(n) Javascript Code erklären? Was kommt bei selected raus?

  • setSelected ist ein boolean
  • length ist ein Integer
 var obj = new Obj({
   ...
   selected: !setSelected && xyz.children.length,
   ...

Danke, Paul

  1. @@Paul

    kann mir jemand die folgende Zeile(n) Javascript Code erklären?

    Die sog. logischen Operatoren && und || ergeben in JavaScript nicht zwangsläufig einen booleschen Wert. Im MDN ist das recht gut beschrieben.

    !setSelected && xyz.children.length

    Wenn !selected als false gewertet wird (wenn bei dir also selected == true ist), dann ist das Ergebnis gleich dem ersten Ausdruck !selected, also false. Andernfalls ist das Ergebnis gleich dem zweiten Ausdruck xyz.children.length.

    LLAP 🖖

    --
    „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
    „Hat auf dem Forum herumgelungert …“
    (Wachen in Asterix 36: Der Papyrus des Cäsar)
    1. Puh. Warum müssen die immer alle dreimal um die Ecke denken :-]

      Vielen Dank

      @@Paul

      kann mir jemand die folgende Zeile(n) Javascript Code erklären?

      Die sog. logischen Operatoren && und || ergeben in JavaScript nicht zwangsläufig einen booleschen Wert. Im MDN ist das recht gut beschrieben.

      !setSelected && xyz.children.length

      Wenn !selected als false gewertet wird (wenn bei dir also selected == true ist), dann ist das Ergebnis gleich dem ersten Ausdruck !selected, also false. Andernfalls ist das Ergebnis gleich dem zweiten Ausdruck xyz.children.length.

      LLAP 🖖

      „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
      „Hat auf dem Forum herumgelungert …“
      (Wachen in Asterix 36: Der Papyrus des Cäsar)

      1. @@Paul

        Warum müssen die immer alle dreimal um die Ecke denken :-]

        Dass && und || in JavaScript mehr sind als boolesche Operatoren, finde ich sehr praktisch.

        So kann man bspw. Variablen mit einem Defaultwert belegen:

        function add(a, b)
        {
          return a + b;
        }
        
        add(2, 3); // ergibt 5
        add(2);    // ergibt NaN (not a number)
        add();     // ergibt NaN (not a number)
        
        
        
        function addplus(a, b)
        {
          a = a || 0;
          b = b || 0;
        
          return a + b;
        }
        
        addplus(2, 3); // ergibt 5
        addplus(2);    // ergibt 2
        addplus();     // ergibt 0
        

        @@Paul

        LLAP 🖖

        Zitiere bitte sinnvoll, nicht alles. Und bitte kein TOFU.

        LLAP 🖖

        --
        „Wir haben deinen numidischen Schreiber aufgegriffen, o Syndicus.“
        „Hat auf dem Forum herumgelungert …“
        (Wachen in Asterix 36: Der Papyrus des Cäsar)