Heim >Web-Frontend >js-Tutorial >Warum wird „0' in einer if-Anweisung als „wahr', in einem Vergleich jedoch als „falsch' ausgewertet?

Warum wird „0' in einer if-Anweisung als „wahr', in einem Vergleich jedoch als „falsch' ausgewertet?

Linda Hamilton
Linda HamiltonOriginal
2024-11-05 10:47:01376Durchsuche

Why Does

Die Macken von JavaScript verstehen: Warum „0“ in if-Anweisungen falsch, aber nicht falsch ist

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn