JavaScript が先頭のゼロの数値を 8 進数として扱う理由
JavaScript では、先頭のゼロで始まる数値は 8 進数 (基数 8) として解釈されます。 )。この動作は、8 進数リテラルの先行ゼロを許可する ECMAScript 3 のオプション拡張に由来します。
LegacyOctalIntegerLiteral Conversion
ただし、この拡張は、次の厳密モードでは禁止されていました。 ECMAScript 5. その結果、厳密モード コードで先頭にゼロがある数値は 10 進数リテラルとして扱われ、エラーが発生します。
非厳密モードでは、実装固有の動作によって先頭にゼロがある数値がどのように処理されるかが決まります。ブラウザによっては依然としてこれらを 8 進数リテラルとして解釈する場合がありますが、他のブラウザではエラーが発生する場合があります。
8 進数解釈の防止
数値が基数 10 で正しく解析されることを確認するには、次のようにします。 2 つの方法:
1.先頭のゼロを削除します
次に示すように、割り当てる前に数値から先頭のゼロを削除します。
<code class="javascript">var x = 10; // Corrected to remove leading zero</code>
2. parseInt(string, radix) を使用する
parseInt() 関数は文字列を引数として受け取り、文字列を解釈する基数 (基数) を指定できます。 10 進数の場合は、次のように基数 10 を使用します。
<code class="javascript">var x = parseInt("010", 10);</code>
結論
JavaScript で先行ゼロの数値が 8 進数として扱われないようにするには、次のようにします。先頭のゼロを削除するか、基数 10 の parseInt() を使用することをお勧めします。これにより、使用される JavaScript モードに関係なく、数値が常に基数 10 で解析されるようになります。
以上がJavaScript が先頭のゼロの数値を 8 進数として解釈するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。