myfreax

ES6 八进制和二进制字面量

ES5 提供了八进制(前缀0)、十进制(无前缀)和十六进制(0x)的数字面量

ES6 八进制和二进制字面量
ES6 八进制和二进制字面量

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 的序列。

内容导航