molily: Variablen/DOM-Objekte füllen

Beitrag lesen

Hallo,

warum?

{Wert1} == {Wert2} || {Wert3}

Wie kommst du darauf, dass dieser Ausdruck jeweils Wert1 und Wert2 mit Wert3 vergleicht und true ergibt, wenn beide Vergleiche true ergeben?

Gemäß der Operatorenrangfolge wird zuerst der Teilausdruck {Wert1} == {Wert2} berechnet. Ergibt true oder false. Heraus kommt der neue Teilausdruck true || {Wert3} respektive false || {Wert3}. Der ||-Operator funktioniert so, dass er den Operanden ergibt, der true ergibt, wenn er zum Boolean-Typ umgewandelt wird. Das heißt:

true || 'punkt' ⇒ true
false || 'punkt' ⇒ 'punkt'

Wenn der Ausdruck nun in if (...) steht, dann wird das Ergebnis natürlich nochmal zu Boolean umgewandelt, weil ein Wahrheitswert erwartet wird. 'punkt' umgewandelt in Boolean ergibt true.

Es ist also Unsinn, if (document.getElementById('modus').value == 'linie' || 'punkt') zu schreiben, es kommt immer true dabei heraus, auch wenn die value-Eigenschaft weder gleich 'linie' noch gleich 'punkt' ist.

Mathias