ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript が先頭にゼロを含む数値を 8 進数として扱うのはなぜですか?

JavaScript が先頭にゼロを含む数値を 8 進数として扱うのはなぜですか?

DDD
DDDオリジナル
2024-11-01 10:22:30249ブラウズ

Why Does JavaScript Treat Numbers With Leading Zeroes as Octal?

JavaScript 数値リテラルの先頭のゼロ: 8 進数変換について

JavaScript は、先頭に 0 を持つ数値リテラルを検出すると、それを次のように解釈します。歴史的な理由により、8 進数 (基数 8) です。先行ゼロはかつて ECMAScript 3 の拡張機能として許可されており、開発者がコード内で 8 進数を指定できるようになっていました。ただし、この慣行は標準化されておらず、特に厳密モードで混乱を引き起こしました。

ECMAScript 5 では、8 進数を表すために先行ゼロを使用することは完全に非推奨になりました。潜在的なエラーを回避するために、開発者は数値リテラルから先頭のゼロを削除するか、次の接頭辞を使用して基数を明示的に指定することをお勧めします:

  • BinaryIntegerLiteral: 0b (例: 0b1010)
  • OctalIntegerLiteral: 0o (例: 0o10)
  • HexIntegerLiteral: 0x (例: 0x10)

コード内で先頭にゼロのある整数リテラルを使用する場合、それが JavaScript エンジンによってどのように解釈されるかを理解することが重要です。 10 進数であることを意図している場合は、先頭のゼロが削除されていることを確認してください。

JavaScript が数値リテラルを 8 進数として解釈しないようにするには、次のいずれかの手法を使用します:

  1. 先頭のゼロを削除します: 数値リテラルから先頭のゼロを削除します。
  2. parseInt を基数 10 で使用します: parseInt を使用し、基数を 10 として指定して 10 進数を強制します解釈。例: parseInt('010', 10);
  3. Use Explicit Base Prefixes: 適切なプレフィックス (8 進数の場合は 0o、2 進数の場合は 0b) を使用して、ベースを明確に指定します。数値リテラル。

以上がJavaScript が先頭にゼロを含む数値を 8 進数として扱うのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。