JavaScript の興味深い動作を明らかにする: 先頭のゼロと数値の解析
JavaScript による先頭のゼロのある数値の処理は、トリップする可能性がある特殊な現象です。アッププログラマー。 010 など、先頭にゼロが付く数値に遭遇すると、JavaScript のエンジンはそれを 8 進数として解釈し、予期しない値 8 が返されます。
歴史のルーツ: 8 進数リテラルの解釈
歴史的に、ECMAScript 3 では、先行ゼロを 8 進数として含むリテラルの解析を可能にするオプションの拡張機能が導入されました。ただし、ECMAScript 5 では、厳密モードでこの慣行に終止符を打ち、NumericLiteral を拡張して OctalIntegerLiteral を含める構文を禁止しました。 ECMAScript 6 では、2 進数および 8 進数の整数リテラル用の専用構造、BinaryIntegerLiteral および OctalIntegerLiteral が導入されました。これらのリテラルには、2 進数の場合は 0b または 0B、8 進数の場合は 0o または 0O がそれぞれ接頭辞として付けられます。以前の OctalIntegerLiteral 拡張機能は LegacyOctalIntegerLiteral に名前が変更され、非厳密モードで引き続き許可されています。
8 進数解釈の防止
8 進数への望ましくない変換を回避するには、次の方法があります。採用するいくつかの戦略:
BinaryIntegerLiteral または OctalIntegerLiteral を使用する: 接頭辞を割り当てて基数を明示的に示します。
parseInt を使用する: parseInt(' など) 指定された基数を使用して数値を解析します。 010', 10) を使用して 10 進数値を取得します。先頭のゼロを削除: 通常の小数として解析されるように、数値から先頭のゼロを削除します。以上がJavaScript が先頭のゼロを 8 進数として解釈するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。