JavaScript のパラドックスを解く: なぜ「0」は比較では False であるのに、If ステートメントでは False になるのか
JavaScript では、プリミティブ " の動作0」は開発者にパズルを投げかけます。 「==」などの論理演算子は「0」を false と同等にしますが、「if」条件では「0」は真として動作します。
比較のパラドックス
コード以下は比較のパラドックスを示しています:
<code class="js">"0" == false // true false == "0" // true</code>
このシナリオでは、JavaScript はその "truthy" と "falsy" の値に基づいて "0" を false に強制します。 「0」、「NaN」、「null」、未定義のような値は偽とみなされますが、その他の値は真実とみなされます。
If ステートメントの異常
ただし、状況は「if」ステートメントで「0」が使用されると不可解になります:
<code class="js">if ("0") console.log("ha") // ha</code>
比較では false に強制されるにもかかわらず、「if」条件では「0」は true と評価されます。これは、JavaScript の "if" ステートメントが、"0" を含むすべての空でない文字列を真実であると扱うためです。
真偽テーブル
この動作を理解するには、次のようにします。 JavaScript の真理性テーブルを参照できます。これらは、比較 (==) および「if」ステートメント (真実) 条件における真/偽ステータスに基づいて値を分類します。
Value | Comparison | If Statement |
---|---|---|
True/Truthy | true | true |
False/Falsy | false | false |
"0" (Falsy) | false | true |
結論
パラドックスJavaScript における「0」の違いは、比較 (==) および「if」ステートメント (真実) における真実性の異なる解釈から生じます。これは微妙ですが重要な違いであり、予期しない結果を避けるために開発者が認識しておく必要があります。ベスト プラクティスとして、正確な評価を保証するために、比較中に厳密な等価 (===) を使用することをお勧めします。
以上がJavaScript の「if」ステートメントでは「0」が比較では False として機能するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。