让数据类型更为精确—— ES11 的全新类型 BigInt 详解

阅读时长 3 分钟读完

JavaScript 是一种弱类型语言,尤其是在处理数字时,其行为可能会产生一些不一致的结果,这是因为 JavaScript 本身只支持 2^53-1 (Number.MAX_SAFE_INTEGER) 以内的整数。当需要处理更大的数字时,通常会使用字符串等其他数据类型来模拟。但是这会导致代码变得难以理解和执行效率下降。因此,在 ES11 中引入了全新的数据类型 BigInt,用于更准确地表示大整数。

什么是 BigInt?

BigInt 是 JavaScript 中的一种新数据类型,用于表示任意精度的整数。 它只是一个整数,但可以超过 JavaScript 的常规数字限制。要声明 BigInt,只需添加 n 后缀即可。例如:let bigIntNum = 900719925474098n;

如何使用 BigInt?

BigInt 可以使用已有的数学操作符来实现诸如加、减、乘、除等数学运算。与 JavaScript 中其他的数据类型不同,BigInt 不能与 Number 类型直接进行运算,必须显式地将 BigInt 转换为字符串进行操作。BigInt 还支持和 Number 类型间的比较。

基本操作

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

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

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

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

在函数中使用 BigInt

BigInt 在函数中的使用与其他数据类型类似。需要注意的是,BigInt 不能对带有 BigInt 字面量的函数进行内联操作。

BigInt 有哪些优势?

更精确的数学运算

如果我们需要处理的是金额、时间戳等精度要求极高的数据,BigInt 就可以帮助我们避免在数学运算上出现精度问题。

满足更高的业务需求

在很多场景下,需要处理的数据可能会超过 Number 类型所能表示的极限。BigInt 的出现恰好满足了这种需求。

举个例子,假如我们需要传递一个秒级的时间戳,Number 类型只能表示到 2038 年,而 BigInt 可以代表更远的未来。

总结

BigInt 是一种新的数据类型,用于表示任意精度的整数。它可以有助于我们处理更大、更复杂的数据,同时可以避免 JavaScript 中数字类型无法表示的精度问题。虽然 BigInt 有自己的局限性,但它是一个强有力的工具,可以帮助我们写出更好的代码,满足更高的业务需求。

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

纠错
反馈