"10" JavaScript で True を返しますか? " /> "10" JavaScript で True を返す? " />
JavaScript: 予期せぬ文字列と整数の比較の難題
Web 開発の領域では、文字列または整数として保存されたパラメータを比較することが必要になることがよくあります。奇妙なバグが表面化し、開発者は頭を悩ませています。あたかもパラメータが文字列として扱われているかのように、整数の比較が不安定に動作するようです。
次の不可解な例を考えてみましょう。コード console.log(" 2" > "10") が実行されると、予期せず 'true' が返されます。2 が数値的に 10 より小さいことを考えると、これは論理的な期待をすべて裏切ります。
では、この奇妙な動作の原因は何でしょうか? Javascript の比較演算子はデフォルトで字句比較を実行することがわかります。これは、文字列と整数を比較するときに、文字列が Unicode コード ポイントとして扱われ、文字列「2」の先頭の「2」が文字ごとに比較されることを意味します。
この問題を解決するには、文字列パラメーターを明示的に整数に解析することが不可欠です。これは、次のコードに示すように、parseInt 関数を使用して実現できます。
console.log(parseInt("2", 10) > parseInt("10", 10));
文字列を整数に解析することで、字句上の落とし穴に陥ることなく、数値比較が正しく実行されることが保証されます。
以上がJavaScript で「2」 > 「10」が True を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。