ES11新增特性之BigInt 详解

阅读时长 3 分钟读完

在 ES11 中,除了引入 nullish coalescing operatoroptional chaining operator 这两个比较受欢迎的语法糖之外,还引入了一项新的基本数据类型:BigInt。如果你曾经在 JavaScript 中处理过大数值,你会发现在 JS 中,数值范围是有限制的,这可能会对大数据的处理造成一些麻烦。而 BigInt 就是为了解决这个问题而生的。

BigInt 是什么?

首先,BigInt 是一种新的基本数据类型。它可以表示任意大的整数,没有最大值限制。在 ES11 中,BigInt 类型以后缀 n 表示,例如:

注意,这里的后缀 n 不是字符串类型。如果你把 n 去掉,那就成了一个数字类型。BigInt 的一些基本用法:

相较于普通数字类型,BigInt 类型有以下不同之处:

  • 数字必须附加 n 后缀
  • 不能使用 Math 对象等常规数学操作
  • BigInt 数值不能和普通数字类型进行混合运算

如何使用 BigInt?

在 BigInt 类型出现之前,对于大数值的处理,我们通常使用第三方库(比如 big.js)进行计算,因为当数字非常大时,原生的 JavaScript 数字类型无法精确表示。

有了 BigInt 后,我们可以直接使用这个新类型,省去引入第三方库的麻烦。示例:

我们也可以用 BigInt 进行一些基本运算:

但是需要注意的是,我们不能像数字类型那样给 BigInt 类型添加小数点。比如:

BigInt 类型的应用场景

因为 BigInt 可以表示非常大的数值,大数值的处理是比较常见的场景。通常来说,BigInt 可以应用于下列场景:

  1. 加密

比如对称(如 AES)和非对称加密(如 RSA)算法中,需要用到极大整数768位以上的复杂计算。BigInt 可以直接使用,省去转换的过程。

  1. 数据库操作

使用 BigInt 可以更轻松地处理所需精度的计算(比如数据库中的自增 ID)。

  1. 统计学计算

极大整数直接进行计算,可以避免过大过小的情况下,精度的问题。

  1. 区块链操作

区块链领域常常需要处理非常大的整数,常常用到 BigInt。

总结

在 ES11 中,BigInt 类型的引入是对 JavaScript 语言的一次重要升级。当我们处理非常大的整数数据时,BigInt 类型可以帮助我们更高效地进行计算。同时,与其他语言不同的是,JavaScript 中的 BigInt 带有可读性极强的后缀 n,是一项非常好用的新增特性。在实际开发中,应该灵活使用 BigInt,提高自己的技能水平。

参考资料

ECMAScript 2020 BigInt

BigInt,一个能存储更大整数的新数据类型

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

纠错
反馈