简介: 在本教程中,您将学习如何在ES6中表示八进制和二进制字面量。
ES5提供了八进制(前缀0),十进制(无前缀)和十六进制(0x)的数字字面量。ES6增加了对二进制字面量的支持,并更改了它表示八进制文字的方式。
八进制
在ES5中,要表示八进制,请使用零前缀(0),后接八进制数字序列(从0到7)。请参见以下示例:
let octalNum1 = 070; // 八进制的56
如果字面量中包含的数字超出了应有的范围,就会忽略前缀的零,后面的数字序列会被当成十进制数,如下所示:
let octalNum2 = 079; // 无效的八进制值,当成79 处理
let octalNum3 = 08; // 无效的八进制值,当成8 处理
八进制字面量在严格模式下是无效的,会导致JavaScript 引擎抛出语法错误。
function test() {
"use strict";
let b = 01;
console.log(b);
}
test(); // Uncaught SyntaxError: Octal literals are not allowed in strict mode.
这是因为ECMAScript 2015 或ES6 中的八进制值通过前缀0o 来表示;严格模式下,前缀0 会被视为语法错误,如果要表示八进制值,应该使用前缀0o。
function test() {
"use strict";
let b = 0o1;
console.log(b);
}
test(); // 1
二进制
在ES5中,JavaScript没有提供任何字面量形式的二进制数。要解析二进制字符串,请使用以下parseInt()函数:
let e = parseInt('111',2);
console.log(e); // 7
ES6通过使用0b 前缀后跟一系列二进制数字(0和1)来增加了对二进制字面量的支持。这是一个例子:
let f = 0b111;
console.log(f); // 7
🤫