【JavaScript】ES6の8進数と2進数リテラルの早見表

JavaScript

本記事では、ES6で8進数と2進数のリテラルを表現する方法について解説します。

ES5では、8進数(接頭辞0)、10進数(接頭辞なし)、16進数(0x)で数値リテラルを提供していましたが、ES6では、2進数リテラルのサポートが追加され、8進数リテラルの表現方法が変更されました。

8進数リテラル

ES5で8進数のリテラルを表現するには、接頭辞の0に続いて8進数の数字(0から7まで)を並べます。

let a = 051;
console.log(a); // 41

8進数リテラルに範囲外の数値が含まれている場合、JavaScriptは先頭の0を無視し、次の例に示すように8進数リテラルを10進数として扱います。

let b = 058; // invalid octal
console.log(b); // 58

この例では、8は8進数を表すのに無効な数字なので、JavaScriptは0を無視し、58という値を持つ10進数として整数を扱います。

8進数のリテラルは非厳密モードで使用できることに注意してください。strictモードで使用すると、JavaScriptはエラーを投げます。

"use strict"

let b = 058; // invalid octal 
console.log(b);

以下は、そのエラーメッセージです。

SyntaxError: Decimals with leading zeros are not allowed in strict mode.

ES6では、接頭辞0oの後に0から7までの8進数の数字を並べることで、8進数リテラルを指定することができます。

let c = 0o51;
console.log(c); // 41 

8進数リテラルに無効な数値を使用した場合、JavaScriptは次の例のようにSyntaxErrorを投げます。

let d = 0o58;
console.log(d); // SyntaxError

2進数リテラル

ES5では、JavaScriptは2進数のリテラル形式を提供していませんでした。

2進数の文字列をパースするには、以下のようにparseInt()関数を使用します。

let e = parseInt('111',2);
console.log(e); // 7

ES6では、接頭辞0bの後に2進数(0と1)を続けて使うことで、2進数リテラルをサポートするようにしました。

let f = 0b111;
console.log(f); // 7

まとめ

  • 8進数のリテラルは、0oから始まり、0から7までの数字が連続する
  • 2進数リテラルは、0bで始まり、0と1の数値が続く

タイトルとURLをコピーしました