摘要:在本教程中,您将学习如何在 ES6 中表示八进制和二进制字面量。
ES5 提供了八进制 (前缀 0
)、十进制 (无前缀) 和十六进制 (0x
) 的数字字面量。ES6 添加了对二进制字面量的支持,并改变了它表示八进制字面量的方式。
八进制字面量
在 ES5 中,要表示八进制字面量,您使用零前缀 (0
),后跟八进制数字 (从 0 到 7) 的序列。例如
let a = 051;
console.log(a); // 41
Code language: JavaScript (javascript)
如果八进制字面量包含超出范围的数字,JavaScript 会忽略前导 0 并将八进制字面量视为十进制数,如下面的示例所示
let b = 058; // invalid octal
console.log(b); // 58
Code 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); // SyntaxError
Code language: JavaScript (javascript)
二进制字面量
在 ES5 中,JavaScript 没有提供任何二进制数字的字面量形式。要解析二进制字符串,您可以使用 parseInt()
函数,如下所示
let e = parseInt('111',2);
console.log(e); // 7
Code language: JavaScript (javascript)
ES6 添加了对二进制字面量的支持,使用 0b
前缀,后跟二进制数字 (0 和 1) 的序列。以下是一个示例
let f = 0b111;
console.log(f); // 7
Code language: JavaScript (javascript)
总结
- 八进制字面量以
0o
开头,后跟 0 到 7 之间的数字序列。 - 二进制字面量以
0b
开头,后跟 0 和 1 的数字序列。
本教程对您有帮助吗?