如何使用 ECMAScript 2020 (ECMAScript 11) 中的 BigInts

阅读时长 9 分钟读完

在前端开发中,我们可能会遇到一些需要处理大整数的情况,例如加密算法、哈希函数等。在以往的 JavaScript 版本中,由于内置的 Number 类型的精度限制,处理大整数的效率和正确性都存在一定的问题。而在 ECMAScript 2020 (ECMAScript 11) 中,新增了 BigInt 类型,可以有效解决这个问题。

BigInt 类型简介

BigInt 类型是一个全新的 JavaScript 原生类型,用于处理任意长度的整数。它可以表示的整数范围比 Number 类型更大,可以安全地表示 2 的 53 次方以上的整数。BigInt 类型的值以 n 结尾,例如 1234567890123456789012345678901234567890n。

BigInt 类型的运算符和 Number 类型类似,但有一些细节需要注意。例如,BigInt 类型和 Number 类型不能直接进行运算,需要通过 BigInt() 函数将 Number 类型转换为 BigInt 类型。另外,BigInt 类型的除法运算结果会向零取整,而不是四舍五入。

如何使用 BigInt 类型

在使用 BigInt 类型时,需要注意以下几点:

  1. BigInt 类型的值必须以 n 结尾。
  2. BigInt 类型不能与 Number 类型直接进行运算,需要通过 BigInt() 函数将 Number 类型转换为 BigInt 类型。
  3. BigInt 类型的除法运算结果会向零取整,而不是四舍五入。

下面是一些使用 BigInt 类型的示例代码。

示例 1:BigInt 类型的基本运算

示例 2:使用 BigInt 类型进行加密算法

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

总结

通过使用 BigInt 类型,我们可以安全地处理任意长度的整数,从而解决了在以往的 JavaScript 版本中处理大整数的问题。在实际开发中,我们可以使用 BigInt 类型进行加密算法、哈希函数等操作。当然,我们也需要注意 BigInt 类型的一些细节,例如不能与 Number 类型直接进行运算,除法运算结果会向零取整等。

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

纠错
反馈