JavaScript-Gleichheitsrätsel: „0“ ist falsch, aber wahr, wenn es mit if getestet wird
Die Gleichheitsoperatoren von JavaScript können zu unerwarteten Ergebnissen führen. wie durch den folgenden Code demonstriert:
console.log("0" == false); // true console.log(false == "0"); // true
Dieser Code impliziert, dass die Zeichenfolge „0“ dem booleschen Wert „false“ entspricht. Der folgende Code gibt jedoch „ha“ aus, obwohl die Bedingung „0“ ist:
if ("0") console.log("ha"); // ha
Warum passiert das?
Um dieses Verhalten zu verstehen, müssen wir um die wahren und falschen Werte von JavaScript zu verstehen. In JavaScript sind die folgenden Werte falsch:
false 0 "" null undefined NaN
Alle anderen Werte sind wahr.
In den ersten beiden Zeilen des Codeausschnitts führt der Gleichheitsoperator (==) eine Typerzwingung durch um die Zeichenfolge „0“ mit dem booleschen Wert „false“ zu vergleichen. Da „0“ ein falscher Wert ist, wird er als gleich falsch betrachtet.
Die if-Anweisung in der dritten Codezeile verwendet jedoch strikte Gleichheit (===), die nur Werte desselben Typs berücksichtigt als gleich. Da „0“ eine Zeichenfolge und „false“ ein Boolescher Wert ist, wird die Bedingung als „falsch“ ausgewertet.
Um Verwirrung zu vermeiden, wird empfohlen, beim Vergleichen von Werten in JavaScript strikte Gleichheit (===) zu verwenden. Der folgende geänderte Code gibt „nichts“ aus:
if ("0" === false) console.log("ha"); // nothing
Wenn Sie den Unterschied zwischen Gleichheit (==) und strikter Gleichheit (===) verstehen, können Sie JavaScript-Code schreiben, der Werte genau vergleicht.
Das obige ist der detaillierte Inhalt vonWarum ist „0' gleich „falsch', aber wahr, wenn es mit „if' in JavaScript getestet wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!