ES11 新特性:BigInt

阅读时长 4 分钟读完

在 ES11 中新增了一个基本数据类型 BigInt,用于表示超出 2^53 - 1 (即 JavaScript 中 Number 类型的最大安全整数) 的整数。BigInt 值可以是一个任意精度的整数,没有在定义时限制最大值,而且操作 BigInt 也可以保持数字的完整性。

如何使用

BigInt 可以通过在整数字面量后添加 n 或者使用 BigInt() 构造函数创建。

可以使用 typeof 判断一个值是否为 BigInt 类型。

运算操作

与普通数字类型不同,BigInt 无法使用一些特殊值 (如 Infinity 和 NaN),同时也不支持运算符重载。

BigInt 支持 +、-、*、**、/、%、| 、&、^、~、<<、>>、>>> 等运算符,与普通数字类型的运算符相同,只是需要在其中添加一个后缀 n。

需要注意的是,BigInt 和普通数字之间的运算会被视为隐式类型转换而抛出错误。

BigInt 和 Number 类型的互操作

由于 BigInt 和 Number 之间运算无法进行,因此可以使用 BigInt() 操作函数或.toString() 方法将两种数字转换类型进行运算。

需要注意的是,将超出 Number 类型的大整数转换为 Number 类型将出现精度丢失。

高精度计算

BigInt 可以用来进行高精度计算,例如开发一个处理大数字的工具。

例如,计算 1000000000000000000n (1亿)这个数的各个位上的数字之和:

-- -------------------- ---- -------
----- ------------ - ---------------------
--- ------ - --

----- ------------- - -- -
  ------ -- ------------ - ----
  ------------ -- ----
-

-------------------- -- --

结论

BigInt 作为新的基本数据类型,扩展了 JavaScript 中可以表示的数字范围,特别是对于需要进行高精度计算的场景,其优势尤为明显。但同时需要注意的是,由于 BigInt 对于内存的使用会存在一定的限制,因此需要谨慎使用,以免在计算过程中出现性能问题。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/674fecb5fbd23cf89070ed98

纠错
反馈