在 ECMAScript 2020(简称 ES11) 中,有很多新特性,其中很重要的一点是 Number 类型的更新。这些更新可以帮助我们更好地处理数值。在本文中,我们将深入讨论 Number 的 update,并且提供一些相应的示例代码。本文适用于初学者和中级前端开发人员。
1. Number.isInteger()
在旧版本的 ECMAScript 中,我们可以使用像 parseInt()
这样的函数判断一个数字是否为整数,但是有时会出现一些令人困惑的情况。在 ES11 中,我们引入了一个新的方法 Number.isInteger(num)
来检查一个数字是否为整数,不需要将其转换为字符串并使用 parseInt()。
Number.isInteger(10); // true Number.isInteger(10.1); // false Number.isInteger('10'); // false
2. Number.EPSILON
在处理数学和物理计算问题时,我们经常遇到精度问题。ES11 中的 Number.EPSILON
常量可以用于判断两个浮点数是否非常接近,从而避免因舍入误差而产生错误的结果。
console.log(0.1 + 0.2 === 0.3); // false console.log(Math.abs(0.1 + 0.2 - 0.3) < Number.EPSILON); // true
3. Number.MAX_SAFE_INTEGER
JavaScript 可以处理非常大的数字,但是某些数值会因为超出 “安全整数” 范围而失去精度。在 ES11 中,我们可以通过 Number.MAX_SAFE_INTEGER
常量来找到安全整数的最大值。
console.log(Number.MAX_SAFE_INTEGER); // 9007199254740991 console.log(Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2); // true console.log(Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 3); // false
4. Number.isNaN()
在 JavaScript 中,NaN
是一种特殊的数值,表示 “Not-a-Number”。在以前的版本中,我们可以使用 isNaN()
函数来检查一个值是否为 NaN,但是该函数在处理某些情况时会引起歧义。在 ES11 中,我们有了一个更好的方法:Number.isNaN()
。
-- -------------------- ---- ------- ------------- -- ---- ----------------- -- ---- ---------- -- ---- ----------- -- ----- -------------------- -- ----- ------------------------ -- ----- ----------------- -- ----- ------------------ -- ----
5. Number.parseInt()
除了 Number.isInteger()
之外,ES11 还引入了一个新方法:Number.parseInt()
,该方法与全局 parseInt()
函数执行相同的任务。但是,Number.parseInt()
有几个优点:
Number.parseInt()
是Number
对象的方法,所以没有必要从全局作用域中获取它。Number.parseInt()
不会把字符串序列解析为八进制值。Number.parseInt()
不支持非十进制的基数。
console.log(parseInt('123.45')); // 123 console.log(Number.parseInt('123.45')); // 123
6. 支持在 BigInt 和 Number 之间进行位运算
在旧版本的 JavaScript 中,BitInt 不能与 Number 进行位运算。ES11 中我们可以将 BigInt 强制转换为 Number 进行位运算,或者将 Number 强制转换为 BigInt 进行位运算。这使得我们可以更好地处理大数运算。
console.log(2n ** 53n - 1n | 0); // 0 console.log(2 ** 53 - 1 | 0n); // 9007199254740991n
结论
ES11 中的 Number 更新使得处理数字的任务变得更加轻松。我们已经了解了许多新特性,包括 Number.isInteger()
、Number.EPSILON
、Number.MAX_SAFE_INTEGER
、Number.isNaN()
、Number.parseInt()
和 BigInt 与 Number 之间的位运算等。这些更新可以使我们的前端开发工作更加高效和简便。
参考资料:
以上是我们对 ES11 之 Number 的 update 的详细讲解,想要学习更多前端知识,请持续关注本站。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/66fd01fe447136260175dc0c