В этом руководстве вы узнаете, как представлять восьмеричные и двоичные литералы в 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.