情報アイランド

「情報を制する者は世界を制す」をモットーに様々な情報を提供することを目指すブログです。現在はプログラミング関連情報が多めですが、投資関連情報も取り扱っていきたいです。

ECMAScript 6の新機能(1)2進数リテラルと8進数リテラル

2016/05/27

ECMAScript 5には16進数リテラルがありました。数値の先頭に0x又は0Xを付加すると16進数となります。

C:\work\node>node
> 0x9
9
> 0xA
10
> 0xa
10
> 0x10
16
> 0X9
9
> 0XA
10
> 0X10
16

ECMAScript 6で2進数リテラルと8進数リテラルが追加されました。数値の先頭に0b又は0Bを付加すると2進数となり、0o又は0Oを付加すると8進数となります。

> 0b1
1
> 0b10
2
> 0b11
3
> 0B1
1
> 0B10
2
> 0B11
3
> 0o7
7
> 0o10
8
> 0O7
7
> 0O10
8

なお、parseInt関数の第2引数に基数を指定しないで第1引数に16進数文字列を指定した場合には16進数としてパースされますが、2進数文字列や8進数文字列には対応していませんので注意してください。

> parseInt('0xFF')
255
> parseInt('0b11')
0
> parseInt('0o77')
0

しかし、Number関数は2進数文字列や8進数文字列にも対応しています

> Number('0xFF')
255
> Number('0b11')
3
> Number('0o77')
63

そのため、ECMAScript 6で数値を表す文字列をパースする際にはparseInt関数を使用せずNumber関数のみを使用するように統一すべきでしょう。

pizyumi
プログラミング歴19年のベテランプログラマー。業務システム全般何でも作れます。現在はWeb系の技術を勉強中。
スポンサーリンク

-ecmascript 2015, ecmascript 6, Javascript