質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

90閲覧

console.log(0212)、これって何が出力される?

van-0215

総合スコア89

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

0クリップ

投稿2019/05/23 09:39

とあるバグ修正で、見つけたハテナがあったので投げさせていただきます。

console.log(0212);

これをした場合は、私は212が出力されると予想しました。

結果は、予想に反して138が出力されました。

これは何を表す数字なのでしょうか???

miyabi_pudding👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

8 進数の構文になるからでは。

【数値と日付 - JavaScript | MDN】
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Numbers_and_dates#Decimal_numbers

10 進数リテラルはゼロ (0) から始めて、それ以降に 10 進の桁を続けることが可能ですが、0 に続くすべての数値が 8 より小さい場合、その数値は 8 進数として解析されることに注意してください。

投稿2019/05/23 09:41

kei344

総合スコア69407

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2019/05/23 09:44

8 以上のものがあった場合は 10 進数になるんですね。これは覚えておかないと危険ですね。
退会済みユーザー

退会済みユーザー

2019/05/23 09:50

問題発生時は逆の認識になりそうですね。 10進数で処理されることを期待しているのに「0 始まりの数値を突っ込んだら、時々意図しない数字として処理される」みたいな。
Zuishin

2019/05/23 09:53

この質問もまさにそうですが、そっちの方が多そうですね。必ずではないところがやっかい。
退会済みユーザー

退会済みユーザー

2019/05/23 10:01 編集

0888 を parse error にするほうが正しい気がしますが、まぁ、8進数を禁止しても特に大きな影響はないかw
maisumakun

2019/05/23 10:01

どうしても書きたいなら「0o123」という新記法を使うか、parseInt('123', 8)とするかですね。
Zuishin

2019/05/23 10:04

勉強になりました。
退会済みユーザー

退会済みユーザー

2019/05/23 10:10

おなじく!ハマらないようにしたいです!w
guest

0

2 * 64 + 1 * 8 + 2 です。
最初に 0 がつくと 8 進数になります。

投稿2019/05/23 09:40

Zuishin

総合スコア28660

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

先頭に0がつき、後ろが0~7 の数値で構成されていると、8進数として処理されます。
ですので8進数の 0212 は、2 * 64 + 1 * 8 + 2 = 128 + 8 + 2 = 138 になって、正しい動作ですね。

投稿2019/05/23 09:40

tacsheaven

総合スコア13703

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問