用 ES12 中的 BigInt 类型处理 JavaScript 中的大整数!

阅读时长 4 分钟读完

在 JavaScript 中,Number 类型可以处理数字,但是当数字超过2的53次方时,它可能会失真,这对于处理大整数是一个灾难。在此之前,我们需要借助一些库来处理大整数。然而,ES12 引入了 BigInt 类型,这是原生支持大整数的新类型,它让处理大整数变得非常简单。

什么是 BigInt?

BigInt 是 JavaScript 中的新内置类型,可以用来表示更大的整数。由于其产生的原因,BigInt 在处理数字的过程中是精准的,不会有失真的情况。BigInt 类型可以存储任意大小的整数,并且速度与原生数字一样快,并且可以使用现有的数字算法库中提供的各种方法进行计算。

如何使用 BigInt?

BigInt 可以直接使用关键字“n”创建:

注意:在数字后面添加字母“n”将其表示为 BigInt 类型。

也可以使用 BigInt() 方法将数字转换为 BigInt 类型:

从 BigInt 的值中提取数字可以使用 toLocaleString() 或 toString() 方法:

可以将 BigInt 类型与原生数字类型进行混合使用:

BigInt 与原生数字

两种类型之间可以进行简单的计算。这是通过在运算符后面添加“n”来完成的,如下例所示:

但是,使用原生的数字运算符时,BigInt 类型和原生数字类型是不能互相转换的:

支持 BigInt 的函数

由于 BigInt 与 Number 有所不同,我们不能在 BigInt 上使用现有的数字函数,因为这些函数不支持 BigInt 类型。因此,在处理 BigInt 的过程中,不得不使用新函数。在 ES2020 中,新增了以下几个重要的 BigInt 函数:

1. BigInt.asUintN()

将任意数字转换成一个固定范围内的一个整数。如果给定的数字不在指定的范围内,函数会是将其变为一个“循环整数”。

2. BigInt.asIntN()

将一个 BigInt 类型的值转换为固定范围内的一个整数。

3. BigInt.asString()

BigInt 类型的值转换为另一种进制表示。

建议

使用 BigInt 可以在处理很大的数字时免去使用库的麻烦。这只是 ES2020 可用的新功能之一,因此需要确保您使用的 JavaScript 引擎支持此版本。与之前的写法强制转换大整数的库相比,BigInt 的使用方法相对简单,同时也较快。除了处理大整数之外,BigInt 还可以用于更安全地管理密码哈希等敏感数据存储。在使用 BigInt 的同时,不应忽略函数的新性质和在浏览器兼容方面的限制。

总结

现在我们已经了解了 BigInt 的用法,实际上,BigInt 一经发布,就在很小的时间内被广泛接受。我们已经了解了 BigInt 的许多重要功能,了解了以下重要函数与 BigInt.asString(),BigInt.asIntN(),BigInt.asUintN()。我们也注意到了有必要在使用 BigInt 的同时了解浏览器的兼容性。开始使用 BigInt 可以更快、更高效的处理大整数。

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

纠错
反馈