在以往的 JavaScript 版本中,由于 Number 类型的限制,无法处理超过 2 的 53 次方减 1 的数字,这对一些科学计算和工程计算产生一定的限制。为了解决这个问题,ES9 引入了 BigInt 类型。
BigInt 的概念
BigInt 是一种新的基本数据类型,它表示任意精度的整数,不受 JavaScript 中 Number 类型的限制。BigInt 类型的变量以 "n" 结尾,如:123456n。
BigInt 可以进行四则运算、位运算和逻辑运算等操作,但需要注意的是,BigInt 类型的变量不能和 Number 类型的变量进行运算,否则会报错。
BigInt 的用法
声明方式
BigInt 变量可以通过以下方式声明:
const num1 = 12345678901234567890n; const num2 = BigInt(12345678901234567890);
操作方式
BigInt 类型变量支持一般的算术运算和按位运算符(与、或、异或、左移、右移和反向)。
例如:
-- -------------------- ---- ------- ----- ---- - ---------------------- ----- ---- - ---------------------- -- ---- ----- ------- - ---- - ----- ----- ------- - ---- - ----- ----- ------- - ---- - ----- ----- ------- - ---- - ----- -- ---- ----- ------- - ---- - ----- ----- ------- - ---- - ----- ----- ------- - ---- - ----- ----- ------- - ---- -- -- ----- ------- - ---- -- -- ----- -------- - ------ -------------------- -------- -------- -------- -------- -------- -------- -------- -------- ----------
结果如下:
111111111111111111100740510111024100n -86419755108641975320n 1219326311370217957137705524759055855600n 0n 13311700968733634016n 104309102427811867278n 104309102427811872442n 24691357802469135780n 6172839455506387269n -12345678901234567891n
BigInt 转换
BigInt 可以通过一些方法转换为 Number 类型,需要注意的是,转换时需要判断是否超出 Number 类型的范围。以下为常见的 BigInt 转换示例:
-- -------------------- ---- ------- ----- ------ - -------------------------------- -- ------ - ------ ----- --- - --------------- ----------------- -- -------- -- ------ - ------ ----- ------- - ------------------------------ - --- --------------------- -- ----------------- -- ---- ------ ----- ------- - ----------------------------------------- --------------------- -- -------------------------------
BigInt 的学习意义
ES9 中引入 BigInt 类型,充分解决了 JavaScript 中 Number 类型的位数限制,使得 JavaScript 可以处理任意位数的整数。对于一些需要大数运算的场景,如加密、密码学、科学计算、工程计算等,BigInt 类型的引入将极大地提高 JavaScript 的可用性和适用性。
此外,BigInt 类型还可以用于计数器、时间戳等场景中,更加接近实际场景。因此,习得 BigInt 类型的使用技巧,拓展了前端工程师的技能和知识面。
总结
ES9 中的 BigInt 类型充分解决了 JavaScript 中 Number 类型的位数限制,拓展了 JavaScript 在大数计算方面的应用场景。BigInt 可以进行四则运算、位运算,同时也可以和字符串、数字互相转换,为前端的应用开发提供了更多的便利。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648d824c48841e9894bd0130