2

ES6 八进制和二进制字面量

 1 year ago
source link: https://www.myfreax.com/octal-and-binary-literals/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
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 的序列。

微信公众号

支付宝打赏

myfreax 淘宝打赏

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK