ES6 八进制和二进制字面量
ES5 提供了八进制(前缀0)、十进制(无前缀)和十六进制(0x)的数字面量
ES5 提供了八进制(前缀0
)、十进制(无前缀)和十六进制(0x
)的数字面量。ES6 添加了对二进制字面量的支持并更改了它表示八进制文字的方式。
在本教程中,您将学习如何在 ES6 学习如何使用八进制和二进制字面量表示这两种类型的数值。
八进制字面量
要在 ES5 中表示八进制文字,您可以使用零前缀 0
后跟八进制数字序列(从 0 到 7)。例如:
let a = 051; console.log(a); // 41
如果八进制文字包含超出范围的数字,JavaScript 将忽略前导 0 并将八进制文字视为整数,如以下示例所示:
let b = 058; // invalid octalconsole.log(b); // 58
在此示例中,由于 8
是表示八进制数的无效数字,因此 JavaScript 忽略 0 并将整数视为值为 58 的十进制数。
请注意,您可以在非严格模式下使用八进制字面量。如果你在严格模式下使用它们,JavaScript 会抛出一个错误。
SyntaxError: Decimals with leading zeros are not allowed in strict mode. 翻译过来就是语法错误:使用小数点的前导零不允许在严格模式。
"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
结论
- 八进制文字以
0o
开头后跟 0 到 7 之间的数字序列。 - 二进制文字以
0b
开头后跟 0 和 1 的序列。