ES6 中的八进制和二进制字面量简介

摘要:在本教程中,您将学习如何在 ES6 中表示八进制和二进制字面量。

ES5 提供了八进制 (前缀 0)、十进制 (无前缀) 和十六进制 (0x) 的数字字面量。ES6 添加了对二进制字面量的支持,并改变了它表示八进制字面量的方式。

八进制字面量

在 ES5 中,要表示八进制字面量,您使用零前缀 (0),后跟八进制数字 (从 0 到 7) 的序列。例如

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

如果八进制字面量包含超出范围的数字,JavaScript 会忽略前导 0 并将八进制字面量视为十进制数,如下面的示例所示

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

在此示例中,由于 8 是表示八进制数的无效数字,因此 JavaScript 会忽略 0 并将整个数字视为值为 58 的十进制数。

请注意,您可以在非严格模式下使用八进制字面量。如果在严格模式下使用它们,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 之间的八进制数字序列来指定八进制字面量。以下是一个示例

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

如果在八进制字面量中使用无效数字,JavaScript 会抛出 SyntaxError,如下面的示例所示

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

二进制字面量

在 ES5 中,JavaScript 没有提供任何二进制数字的字面量形式。要解析二进制字符串,您可以使用 parseInt() 函数,如下所示

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

ES6 添加了对二进制字面量的支持,使用 0b 前缀,后跟二进制数字 (0 和 1) 的序列。以下是一个示例

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

总结

  • 八进制字面量以 0o 开头,后跟 0 到 7 之间的数字序列。
  • 二进制字面量以 0b 开头,后跟 0 和 1 的数字序列。
本教程对您有帮助吗?