ホームページ >ウェブフロントエンド >jsチュートリアル >if ステートメントでは「0」が True と評価されるのに、比較では False と評価されるのはなぜですか?
JavaScript では、論理コンテキストでの値の評価 (例: if ステートメントまたはブール比較では、予期しない結果が生じる可能性があります。この動作は、JavaScript の型強制メカニズムによるものです。
JavaScript は値の型を緩く設定しており、文字列または数値が論理コンテキストで使用される場合、型強制を受けてブール値に変換されます。この変換では、空でない文字列とゼロ以外の数値は true と評価され、空の文字列とゼロの数値は false と評価されます。
したがって、== または === を使用して "0" と false を比較すると、の場合、型強制は "0" (空ではない文字列) と false (ゼロに似た値) の両方を true に変換するため、true を返します。
ただし、if ステートメントを使用する場合、"0" のみが評価されます。真実に。これは、if ステートメントが内部で強制されたブール値を使用し、空でない文字列に対して true を返すためです。
曖昧さを避けるため、プリミティブ値を比較するときは、厳密な等価演算子 === を使用することをお勧めします。型強制を行わずに比較を実行します。これにより、必要に応じて「0」が false として正しく評価されるようになります。
さまざまなデータ型に対する JavaScript の真偽の動作を簡潔に表現するには、添付の表を参照してください。真の等価比較を行うには、常に === を選択することを忘れないでください。
以上がif ステートメントでは「0」が True と評価されるのに、比較では False と評価されるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。