JavaScript の先頭にゼロが付いた数字: 謎の解読
JavaScript で次のコードに遭遇すると想像してください:
var num = 040; console.log(num); // 32
当惑して、40 がどうして 32 に等しいのか疑問に思うかもしれません。答えは重要性にあります。
JavaScript の初期バージョンでは、数値リテラルの先頭のゼロは、16 進数の先頭の 0x と同様に、8 進数 (基数 8) を表していました。したがって、「040」は 4x8^1 0x8^0 = 32 として解釈されました。
ただし、この方法は混乱を招くことが判明し、ECMAScript 3 ではオプションの拡張機能にダウングレードされました。最新の JavaScript では厳密モードが強制され、先頭にゼロが付きます。一貫性を保つために、10 進リテラルは禁止されています。
ECMAScript 6 では、8 進数と 2 進数を表す新しい方法が導入されました。それぞれ 0o と 0b のプレフィックスを使用した番号。先行ゼロ (010) を使用する従来の 8 進数形式は、厳密モードで構文エラーになりました。
そのため、上記のコードは厳密モードで構文エラーを返すようになりました。基数 8 の数値を解析したい場合は、推奨される 0o プレフィックスを使用するか、次のように parseInt を使用できます。
parseInt('010', 8); // Returns 8
10 進数が正しく解析されるようにするには、先頭のゼロを削除するか、parseInt を使用します。
要約すると、JavaScript の数値リテラルにおける先頭のゼロの歴史的重要性を理解することは、JavaScript の内容を理解する上で非常に重要です。動作とコードを正しく解釈します。
以上がJavaScript で「040」が 32 に等しいのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。