JavaScript のパラドックスを解く: なぜ "0" は比較では False であるのに、If ステートメントでは False になるのか
JavaScript では、プリミティブ " の動作0」は開発者にパズルを投げかけます。 「==」などの論理演算子は「0」を false と同等にしますが、「if」条件では「0」は true として動作します。
比較パラドックス
コード以下は比較のパラドックスを示しています:
"0" == false // true
false == "0" // true
このシナリオでは、JavaScript は "truthy" と "falsy" の値に基づいて "0" を false に強制します。 「0」、「NaN」、「null」、未定義などの値は偽とみなされますが、その他の値は真実とみなされます。
If ステートメントの異常
ただし、状況は「if」ステートメントで「0」が使用されると不可解になります:
if ("0") console.log("ha") // ha
強制されているにもかかわらず比較では「0」が false に評価され、「if」条件では「0」が true に評価されます。これは、JavaScript の "if" ステートメントが、"0" を含む空でないすべての文字列を真実として扱うためです。
真偽テーブル
この動作を理解するには、次のようにします。 JavaScript の真理性テーブルを参照できます。これらは、比較 (==) および「if」ステートメント (真実) 条件での真/偽ステータスに基づいて値を分類します:
Value | Comparison | If ステートメント |
---|---|---|
真/真実 | 真 | 真 |
偽/偽 | 偽 | 偽 |
"0" (偽) | 偽 | true |
結論
JavaScript の "0" のパラドックスは、比較における真実性のさまざまな解釈から生じます (= =) および "if" ステートメント (真実)。これは微妙ですが重要な違いであり、予期しない結果を避けるために開発者は認識しておく必要があります。ベスト プラクティスとして、正確な評価を保証するために、比較中に厳密な等価 (===) を使用することをお勧めします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3