読者です 読者をやめる 読者になる 読者になる

JS.next

JavaScriptの最新実装情報を追うブログ

新8進数と2進数の数値リテラルが実装された

 

説明

従来の8進数数値リテラルはこうだった。

// 0(ゼロ) + 8進数
076    // 62
01234  // 668


このリテラルは10進数での頭0埋めと紛らわしい。

実際、 parseInt 関数に "076" 等の文字列を通したとき、8進数と解釈され期待と異なる結果になってしまう問題は、初心者がハマりやすい罠として有名だった。

現在のモダンブラウザはこれを10進数と解釈してくれるようになり、strict modeではこのリテラルの使用が禁止され、罠は無くなったのだが、今度は8進数が使いづらくなってしまっていた。

Node.jsなど、サーバーサイド環境ではパーミッションに8進数を扱うので、使えないと困ってしまうのだが、この度問題を解決する新しいリテラルが実装された。


新しい8進数数値リテラルはこう。

// 0(ゼロ) + O/o(オー) + 8進数
0o76    // 62
0o1234  // 668


それから2進数数値リテラルも導入された。

// 0(ゼロ) + B/b(ビー) + 2進数
0b1    // 1
0b10   // 2
0b100  // 4


これはビット演算用のマジックナンバーとして使える(?)



実装されたバージョン

  • V8 3.20.8 3.30.37(デフォルト有効)
  • Node.js 0.11.5