什么是 BigInt
BigInt 是在 ES8/ES2017 中引入的一种新的数据类型,用于处理超出 JavaScript Number 类型最大值范围的整数运算。在以前的版本中,JavaScript 只能处理最大为 2^53 - 1 的整数运算,而 BigInt 可以处理任意大小的整数运算。
如何使用 BigInt
在使用 BigInt 之前,需要在数字后面加上 n
表示这是一个 BigInt 类型的数据。例如:
const bigNum = 1234567890123456789012345678901234567890n;
在处理 BigInt 的运算时,需要使用 BigInt 对象的方法,例如:
const a = 1234567890123456789012345678901234567890n; const b = 9876543210987654321098765432109876543210n; console.log(a + b); // 11111111111111111110111111111111111111100n console.log(a * b); // 1219326311370217954079016504134916605377339748989883389019786310312567028800n
BigInt 的限制
虽然 BigInt 可以处理任意大小的整数,但是在实际使用中,还是有一些限制的。
不能与 Number 类型混用
因为 BigInt 是一种新的数据类型,与 Number 类型不能直接进行运算。如果需要将 BigInt 转换为 Number 类型,需要使用 Number()
方法,但是这样会有精度的损失。
const a = 1234567890123456789012345678901234567890n; const b = 123; console.log(a + b); // TypeError: Cannot mix BigInt and other types, use explicit conversions console.log(Number(a) + b); // 1234567890123456789012345678901234568013
不能使用 Math 对象的方法
由于 Math 对象的方法都是针对 Number 类型的,所以在 BigInt 中是无法使用的。
const a = 1234567890123456789012345678901234567890n; console.log(Math.abs(a)); // TypeError: Cannot convert a BigInt value to a number
不能使用 BigInt 作为对象的键
在 JavaScript 中,对象的键只能是字符串或 Symbol 类型,不能是 BigInt 类型。
const obj = { 1n: 'one' }; // SyntaxError: Invalid or unexpected token
示例代码
下面是一个使用 BigInt 求斐波那契数列的例子:
// javascriptcn.com 代码示例 function fibonacci(n) { let a = 0n, b = 1n; for (let i = 0; i < n; i++) { [a, b] = [b, a + b]; } return a; } console.log(fibonacci(100)); // 354224848179261915075n
总结
BigInt 是 ES8/ES2017 中引入的一种新的数据类型,用于处理超出 JavaScript Number 类型最大值范围的整数运算。在使用 BigInt 时需要注意与 Number 类型的区别,以及一些限制。在实际开发中,如果需要处理超大整数的运算,可以使用 BigInt 来解决。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/656437c1d2f5e1655dda0587