Двоичные и восьмеричные литералы JavaScript в ES6

В этом руководстве вы узнаете, как представлять восьмеричные и двоичные литералы в ES6 JavaScript.

ES5 предоставлял числовые литералы в восьмеричном (префикс 0 ), десятичном (без префикса) и шестнадцатеричном ( 0x ) виде. В ES6 добавлена поддержка двоичных литералов и изменен способ представления восьмеричных литералов.

Восьмеричные литералы

Чтобы представить восьмеричный литерал в ES5, вы используете нулевой префикс ( 0 ), за которым следует последовательность восьмеричных цифр (от 0 до 7). Например:

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

Если восьмеричный литерал содержит число, выходящее за пределы диапазона, JavaScript игнорирует начальный 0 и обрабатывает восьмеричный литерал как десятичный, как показано в следующем примере:

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

В этом примере, поскольку 8 — недопустимая цифра для представления восьмеричного числа, JavaScript игнорирует 0 и обрабатывает целое число как десятичное со значением 58.

Обратите внимание, что вы можете использовать восьмеричные литералы в нестрогом режиме. Если вы используете их в строгом режиме, 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. Вот пример:

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

Если вы используете недопустимое число в восьмеричном литерале, JavaScript выдаст SyntaxError, как показано в следующем примере:

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

Двоичные литералы

В ES5 JavaScript не предоставлял буквальную форму для двоичных чисел. Чтобы разобрать двоичную строку, вы используете функцию parseInt() следующим образом:

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

В ES6 добавлена поддержка двоичных литералов с использованием префикса 0b, за которым следует последовательность двоичных чисел (0 и 1). Вот пример:

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

Заключение

  • Восьмеричные литералы в JavaScript начинаются с 0o, за которым следует последовательность чисел от 0 до 7.
  • Двоичные литералы начинаются с 0b, за которым следует последовательность чисел 0 и 1.
Рейтинг
( Пока оценок нет )
Александр Русаков / автор статьи
Программист, разработчик, 12 лет опыта работы в крупных компаниях. Быстро освоил typescript, делюсь своими знаниями на страницах этого сайта.
Загрузка ...
JavaScript и TypeScript