1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptで、「0」はfalseに等しいのに、「if」でテストすると、それだけでfalseにならないのはなぜですか?

2022-04-04 05:42:08

質問

次のようになります。 "0" はJavascriptではfalseです。

>>> "0" == false
true

>>> false == "0"
true

では、なぜ次のように印刷されるのでしょうか。 "ha" ?

>>> if ("0") console.log("ha")
ha

解決方法は?

その理由は、明示的に "0" == false の場合、両辺が数値に変換されることになり では を実行すると、比較が行われます。

するとき。 if ("0") console.log("ha") は、文字列の値がテストされています。空でない文字列は true であり、空文字列は false .

イコール(==)

もし、2つのオペランドが 同じ型でない の場合、JavaScript はオペランドを変換し、厳密な比較を適用します。もしどちらかのオペランドが 数値またはブール値 である場合、オペランドは可能な限り数値に変換されます。 文字列 もう一方のオペランドは、可能であれば文字列に変換されます。もし オペランドの両方がオブジェクト オペランドがメモリ上の同じオブジェクトを参照している場合、JavaScriptは内部参照を比較し、等しいと判断します。

(以下 比較演算子 をご覧ください(Mozilla Developer Network)