在 ECMAScript 2016 中,加入了二进制和八进制数字表示法的支持。这让 JavaScript 开发人员可以更方便、更直观地表示数字,同时也能够避免一些常见的数字表示误差问题。
二进制数字表示法
二进制数字表示法允许使用 0b
或 0B
前缀来表示二进制数字。例如,要表示二进制数字 1010
,可以使用以下代码:
let num = 0b1010; console.log(num); // 输出 10
可以看到,使用二进制数字表示法可以更明确地表示数字,并且可以避免一些常见的数字表示误差问题。例如,以下代码的结果可能出乎意料:
console.log(0.1 + 0.2); // 输出 0.30000000000000004
而使用二进制数字表示法可以避免这种问题:
console.log(0b0.1 + 0b0.2); // 输出 0.3
值得注意的是,二进制数字表示法只支持整数部分和小数部分的二进制表示,不支持科学计数法等其他表示方式。
八进制数字表示法
八进制数字表示法允许使用 0o
或 0O
前缀来表示八进制数字。例如,要表示八进制数字 42
,可以使用以下代码:
let num = 0o52; console.log(num); // 输出 42
需要注意的是,八进制数字表示法在严格模式下是禁用的,因为八进制数字表示法在不同的实现中可能有不同的行为,可能会导致意料外的结果。例如,在 Chrome 浏览器中,以下代码的结果是 9
:
'use strict'; console.log(0o11); // 输出 9
因此,为了避免不同实现之间的兼容性问题,建议不要使用八进制数字表示法。
总结
ECMAScript 2016 中的数字扩展让 JavaScript 开发人员可以更方便、更直观地表示数字,同时也能够避免一些常见的数字表示误差问题。二进制数字表示法是一个很好的补充,建议开发人员在需要表示二进制数字时使用。而八进制数字表示法则不太建议使用,因为它在不同的实现中可能会有不同的行为,可能会导致意料之外的结果。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6531d7f07d4982a6eb3d16ee