ECMAScript 2020:"大管家"BigInt
随着数字领域的发展,JavaScript 也有了两个新的数值类型: BigInt 和 Number。在 JavaScript 中,每个数字都是一个 Number 类型,但是存在一些限制,例如只能表示 2 的 53 次方以内的整数,因此在涉及到超大数字计算时,JavaScript 不得不依赖于一些外部库。但现在,BigInt 可以很好地解决这些问题。
BigInt
BigInt 是 ECMAScript 2020 中引入的一个新类型。它可以表示任意大小的整数,从而允许 JavaScript 处理极大的数字,以用于密码学、货币和其他需要高度精确计算的应用程序。
使用 BigInt,我们可以轻松地处理大于 2 的 53 次方的数字。例如,下面的代码将会抛出一个错误:
console.log(2 ** 53 + 1); // 超出Number类型最大值
而以下代码则可以正常输出:
console.log(2n ** 53n + 1n); // 9007199254740993n
BigInt 以“n”结尾来表示一个 BigInt 类型的数字,这让我们可以轻松地辨别出一个 BigInt 类型的数字。
BigInt 可以使用与数字类型相同的算术操作符进行计算,如 +、-、*、/、% 和 **。BigInt 还可以进行位运算和比较运算,以及使用 Number 类型进行混合运算。
以下例子展示了一些可以使用 BigInt 的常见操作:
-- -------------------- ---- ------- --- - - --------------------------------------------------- -- ---- ------ ----- ------------- - ---- -- -------------------------------------------------- ------------- - ---- -- -------------------------------------------------- ------------- - ---- -- -------------------------------------------------- ------------- - ---- -- ------------------------------------------------- ------------- - ----- -- -- ------------- -- ---- -- ----------------------------------------------------------------------------------------------- ------------- - ---- -- ---------------- ------------- - ---- -- ------------------------------------------------------------- -- ----------- ------------- - ----------------------------------------------------- -- ---- ------------- - ----------------------------------------------------- -- -----
需要注意的是,BigInt 和 Number 类型不是相互兼容的。因此,如果将一个 BigInt 类型的变量传递给一个需要 Number 类型的函数时,需要使用 Number() 函数进行类型转换。
let x = 123n; let y = Number(x); // 将 BigInt 变量 x 转换为 Number 类型 console.log(y); // 123
在处理 BigInt 时,我们还需要注意一些 JavaScript 的语言规则。例如,BigInt 类型不能与字符串直接进行运算,更不能与 Boolean 值进行运算。需要使用 BigInt() 函数将一个字符串转换成一个 BigInt 类型的变量。
let x = 12345678901234567890n; let y = "456789012345678901234567890n"; console.log(x + BigInt(y)); // 456789012345678914691357935860n console.log(x + y); // TypeError: Cannot mix BigInt and other types, use explicit conversions
在 JavaScript 中,我们可以使用 Object.prototype.toString() 方法获取一个变量对象的类型信息。对于 BigInt 类型的变量来说,这个方法将返回 “[object BigInt]”。
let x = 12345678901234567890n; console.log(Object.prototype.toString.call(x)); // [object BigInt]
BigInt 在 JavaScript 开发者工具箱中是一个非常实用的工具。它的使用能够极大地扩展开发者的工作范围,使开发人员可以更加自信地处理大型数字和数值计算。
总结
BigInt 可以帮助我们解决 JavaScript 中过去遇到的数值类型的限制。它可以有效地处理大型数字,扩展了 JavaScript 工具箱的功能。当处理大型数字时,BigInt 将是一个非常有用的帮手,可以使我们更高效地编写 JavaScript 代码。
示例代码
-- -------------------- ---- ------- -- ------ ---- -- ---- ------ ----- --- - - --------------------------------------------------- -- ------ -- ------------- - ---- -- -------------------------------------------------- -- ------ -- ------------- - ---- -- -------------------------------------------------- -- ------ -- ------------- - ---- -- -------------------------------------------------- -- ------ -- ------------- - ---- -- ------------------------------------------------- -- ------ -- ------------- - ----- -- -- -- ------ - ------------- -- ---- -- ----------------------------------------------------------------------------------------------- -- ------ --- ------------- - ---- -- -- -- ------ -- ------------- - ---- -- -------------------------------------------------- -- ------ -- ------------- - ----------------------------------------------------- -- ---- ------------- - ----------------------------------------------------- -- ----- -- ------ ---- --- - - ---------- -- - ------ -- - --- ------ -- --------------- -- ---------------------- -- ------ ------ --- - - ------------------------------- ------------- - ----------- -- ------------------------------- -- ------ ---- --- - - ----- --- - - ----- ------------- - --- -- ---- ------------- - --- -- ----- ------------- - - - --- -- ----
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/654589cc7d4982a6ebf3035d