返回

ES6 新奇搞怪的新数字格式:八进制与二进制数字字面量揭秘

前端

在ES6之前,JavaScript 只支持八进制(前缀0)、十进制(无前缀)和十六进制(0x)三种数字字面量。而ES6则为我们带来了二进制字面量,并对八进制数字字面量的表示方式进行了改变。

八进制数字字面量

在ES5中,八进制数字字面量使用一个零前缀(0),后接八进制数字序列表示。例如:

010  // 八进制 10,转换为十进制是 8
025  // 八进制 25,转换为十进制是 21
077  // 八进制 77,转换为十进制是 63

在ES6中,八进制数字字面量的表示方式发生了改变。现在,可以使用两个零前缀(00),后接八进制数字序列表示。例如:

0o10  // 八进制 10,转换为十进制是 8
0o25  // 八进制 25,转换为十进制是 21
0o77  // 八进制 77,转换为十进制是 63

这种新的表示方式更加清晰和一致,也避免了与十进制数字字面量的混淆。

二进制数字字面量

ES6还为我们带来了二进制数字字面量,可以使用两个零前缀(0b),后接二进制数字序列表示。例如:

0b10  // 二进制 10,转换为十进制是 2
0b11  // 二进制 11,转换为十进制是 3
0b100  // 二进制 100,转换为十进制是 4

二进制数字字面量非常适合在位操作和底层系统编程中使用。它们可以让你更轻松地处理二进制数据,而无需进行繁琐的转换。

进制转换

在JavaScript中,可以使用parseInt()函数将字符串形式的数字转换为整数。该函数的第二个参数指定了要转换的数字的进制。例如:

parseInt("010", 8);  // 将八进制字符串 "010" 转换为十进制整数 8
parseInt("0b10", 2);  // 将二进制字符串 "0b10" 转换为十进制整数 2

你也可以使用toString()方法将整数转换为特定进制的字符串。该方法的第二个参数指定了要转换的进制。例如:

(10).toString(8);  // 将十进制整数 10 转换为八进制字符串 "12"
(10).toString(2);  // 将十进制整数 10 转换为二进制字符串 "1010"

结论

ES6中的八进制和二进制数字字面量为我们提供了更多表示数字的方式,也让JavaScript的数字操作更加灵活和强大。这些新特性可以让你更轻松地处理底层系统编程和二进制数据,并为你的代码增添一抹独特性和创造力。