Heim >Web-Frontend >js-Tutorial >Warum wird „0' in einer if-Anweisung als „wahr', in einem Vergleich jedoch als „falsch' ausgewertet?
In JavaScript die Auswertung eines Werts in einem logischen Kontext – wie z if-Anweisungen oder boolesche Vergleiche können zu unerwarteten Ergebnissen führen. Dieses Verhalten ist auf den Typerzwingungsmechanismus von JavaScript zurückzuführen.
JavaScript gibt seine Werte lose ein, und wenn ein Zeichenfolgen- oder Zahlenwert in einem logischen Kontext verwendet wird, unterliegt es einer Typerzwingung, um ihn in einen booleschen Wert umzuwandeln. Bei dieser Konvertierung werden nicht leere Zeichenfolgen und Nicht-Null-Zahlen als wahr ausgewertet, während leere Zeichenfolgen und Null-Zahlen als falsch ausgewertet werden.
Wenn Sie daher „0“ mit „false“ vergleichen, indem Sie == oder === verwenden , gibt es „true“ zurück, weil Typerzwingung sowohl „0“ (eine nicht leere Zeichenfolge) als auch „false“ (einen nullähnlichen Wert) in „true“ konvertiert.
Bei Verwendung einer if-Anweisung wird jedoch nur „0“ ausgewertet zu wahr. Dies liegt daran, dass if-Anweisungen intern einen erzwungenen booleschen Wert verwenden, der für nicht leere Zeichenfolgen „true“ zurückgibt.
Um Unklarheiten zu vermeiden, wird empfohlen, beim Vergleich primitiver Werte den strikten Gleichheitsoperator === zu verwenden, z Es führt einen Vergleich ohne Typzwang durch. Dadurch wird sichergestellt, dass „0“ bei Bedarf korrekt als falsch ausgewertet wird.
Eine prägnante Darstellung des Wahrheits-/Falschverhaltens von JavaScript für verschiedene Datentypen finden Sie in den beigefügten Tabellen. Denken Sie daran, für echte Gleichheitsvergleiche immer === zu wählen.
Das obige ist der detaillierte Inhalt vonWarum wird „0' in einer if-Anweisung als „wahr', in einem Vergleich jedoch als „falsch' ausgewertet?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!