If Abfrage gibt bei 2 gleichen Abfragen 2 unterschiedliche Ergebnisse zurück

  • Hey,


    ich habe eine if-else Abfrage in der ich prüfe ob X ungleich Element ist.


    Nun ist es so, dass wenn ich mit !== prüfe trotzdem die Bedingung erfüllt ist obwohl X ungleich Element ist.


    Folgender Code betrifft es

    JavaScript
    if(choosenProductoptions[productoptions] !== "Quantum1500" || choosenProductoptions[productoptions] !== "Quantum1800"){
        TweenMax.to( object.material._albedoColor, 1, {
           r : this.colors[choosenProductoptions[productoptions]].r,
           g : this.colors[choosenProductoptions[productoptions]].g,
           b : this.colors[choosenProductoptions[productoptions]].b
        })
    }else{
      console.log("detected")
    }


    Nun wenn ich einfach anders rum mit === prüfe und die IF-Abfrage etwas verändere, wird plötzlich in den else gesprungen was für mich das normale Verhalten darstellt.

    JavaScript
    if(choosenProductoptions[productoptions] === "Quantum1500" || choosenProductoptions[productoptions] === "Quantum1800"){
                
    }else{
       TweenMax.to( object.material._albedoColor, 1, {
          r : this.colors[choosenProductoptions[productoptions]].r,
          g : this.colors[choosenProductoptions[productoptions]].g,
          b : this.colors[choosenProductoptions[productoptions]].b
       })
    }


    Warum ist das denn so? Hat jemand eine Idee?

  • Guten Morgen :)


    danke für deine Antwort :)

    Achso. Darum wird nicht in den else Block gesprungen. Bei OR muss nur 1 Fall true sein damit in den Hauptzweig der Abfrage reingesprungen wird. Dies ist ja der Fall weil Quantum1500 !== Quantum1800 ist. Und das ergibt immer true. Bei && jedoch sage ich, dass beide Fälle true zurückgeben müssen damit in den Hauptzweig gesprungen wird. Dort wird jedoch false zurückgegeben und in den Else-Block gesprungen weil Quantum1500 !== Quantum1500 nie true ergibt.


    Liege ich da soweit richtig :) ?

  • Guten Morgen Stef,

    ich denke schon. Dies ist wohl der Kern der Sache:

    Zitat

    Dies ist ja der Fall weil Quantum1500 !== Quantum1800

    Deshalb ist bei dem ersten Code immer eine der Bedingung erfüllt und weil sie verodert sind, kommt man zwangsläufig in den then-Zweig hinein.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!