ES6における8進数および2進数リテラルの簡単な解説

概要: このチュートリアルでは、ES6で8進数および2進数リテラルを表現する方法を学びます。

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

8進数リテラル

ES5で8進数リテラルを表現するには、0の接頭辞(0)の後に、8進数(0から7)の数字の並びを使用します。例:

let a = 051;
console.log(a); // 41Code language: JavaScript (javascript)

8進数リテラルに範囲外の数字が含まれている場合、JavaScriptは先頭の0を無視し、8進数リテラルを10進数として扱います。次の例を参照してください。

let b = 058; // invalid octal
console.log(b); // 58Code language: JavaScript (javascript)

この例では、8が8進数を表現するための無効な数字であるため、JavaScriptは0を無視し、数値全体を値58の10進数として扱います。

非strictモードでは8進数リテラルを使用できます。strictモードで使用すると、JavaScriptはエラーをスローします。

"use strict"
let b = 058; // invalid octal 
console.log(b);Code language: JavaScript (javascript)

エラーメッセージは次のとおりです。

SyntaxError: Decimals with leading zeros are not allowed in strict mode.Code language: JavaScript (javascript)

ES6では、接頭辞0oの後に0から7までの8進数の並びを使用することで、8進数リテラルを指定できます。以下に例を示します。

let c = 0o51;
console.log(c); // 41 Code language: JavaScript (javascript)

8進数リテラルに無効な数字を使用すると、JavaScriptは次の例に示すようにSyntaxErrorをスローします。

let d = 0o58;
console.log(d); // SyntaxErrorCode language: JavaScript (javascript)

2進数リテラル

ES5では、JavaScriptは2進数のリテラル形式を提供していませんでした。2進数の文字列を解析するには、次のようにparseInt()関数を使用します。

let e = parseInt('111',2);
console.log(e); // 7Code language: JavaScript (javascript)

ES6では、0b接頭辞の後に2進数(0と1)の並びを使用することで、2進数リテラルのサポートが追加されました。以下に例を示します。

let f = 0b111;
console.log(f); // 7Code language: JavaScript (javascript)

まとめ

  • 8進数リテラルは、0oで始まり、その後に0から7までの数字の並びが続きます。
  • 2進数リテラルは、0bで始まり、その後に0と1の数字の並びが続きます。
このチュートリアルは役に立ちましたか?