Verständnisfrage zu 0 und false

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Sprint

Erfahrenes Mitglied
Hallo zusammen,

bis jetzt dachte ich immer, daß be JS, ähnlich wie bei PHP, 0 einem false entspricht. Heute hatte ich aber diese Abfrage:
Javascript:
// a, c und d sind abgefragte Checkboxen
// a = true, c = true, b = 0

a && !b && (c || d)    // ergibt false

a && b==0 && (c || d)    // ergibt true
Kann mir bitte jemand den Unterschied erklären?
 
Das Beispiel ist ziemlich verknispelt und praxisfremd und nicht so gut geeignet, den Unterschied zu verstehen. Sieh dir statt dessen die Doku zu strpos an, dann verstehst Du den Unterschied leichter und auch den Sinn des Ganzen:
PHP: strpos - Manual
"Return Values" und dort besonders die Warning.
 
Es geht aber um Javascript und nicht PHP ;)

Und das ganze ist aus der Praxis. a, c, d sind Checkboxen, die auf markiert geprüft werden. b ist der Wert eines hidden Feldes, das auf 1 gesetzt wird, solange bestimmte Arbeiten noch nicht erledigt wurden. Wenn der ganze Ausdruck true ergibt, werden verschiedene options eines selects freigegeben.
 
Schau mal hier im Conversion Table.
Du könntest hier in eine Falle getappt sein. Der Zahlwert 0 wird bei der Umformung zum Wahrheitswert falsch. Aber eine Zeichenkette "0" wird bei der Umwandlung zu wahr.
Ob man mit einem Zahlwert oder einem numerischen String arbeitet ist bei JavaScript leider nicht immer ganz klar.

Mögliche Lösung: Erst per Hand zur Zahl konvertieren Boolean(Number(x)).

Gruß Technipion
 
Ja, genau das ist es. Der Wert eines hidden Feldes wird ja auch als String gewertet und darum kam dann wahr bei raus. Vielen Dank für die Erklärung!
 
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

Neue Beiträge

Zurück