ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript で「040」が 32 に等しいのはなぜですか?

JavaScript で「040」が 32 に等しいのはなぜですか?

Mary-Kate Olsen
リリース: 2024-11-26 09:01:11
オリジナル
373 人が閲覧しました

Why Does `040` Equal 32 in JavaScript?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート