ホームページ >ウェブフロントエンド >jsチュートリアル >「0」は false に等しいのに、JavaScript の if でテストすると True になるのはなぜですか?
JavaScript 等価パズル: "0" は偽ですが、if でテストすると真です
JavaScript の等価演算子は予期しない結果を引き起こす可能性があります。次のコードで示されるように:
console.log("0" == false); // true console.log(false == "0"); // true
このコードは、文字列「0」がブール値 false と同等であることを意味します。ただし、次のコードは、条件が "0" であるにもかかわらず、"ha" を出力します:
if ("0") console.log("ha"); // ha
なぜこれが起こっているのですか?
この動作を理解するには、次のことが必要です。 JavaScript の真の値と偽の値を理解するため。 JavaScript では、次の値は false です:
false 0 "" null undefined NaN
他のすべての値は true。
コード スニペットの最初の 2 行では、等価演算子 (==) が型強制を実行します。文字列「0」をブール値 false と比較します。 「0」は偽の値であるため、false と等しいとみなされます。
ただし、コードの 3 行目の if ステートメントでは、同じ型の値のみを考慮する厳密な等価性 (===) が使用されています。平等として。 「0」は文字列であり、false はブール値であるため、条件は false として評価されます。
混乱を避けるために、JavaScript で値を比較するときは厳密な等価 (===) を使用することをお勧めします。次の変更されたコードは、「何も」を出力します:
if ("0" === false) console.log("ha"); // nothing
等価 (==) と厳密等価 (===) の違いを理解することで、値を正確に比較する JavaScript コードを作成できます。
以上が「0」は false に等しいのに、JavaScript の if でテストすると True になるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。