在前端开发中,我们经常需要处理数字类型的数据,但是 JavaScript 中的 Number 类型有一定的限制,最大值是 2 的 53 次方减 1,如果需要处理更大的数字,就需要使用 ECMAScript 2020 中引入的 BigInt 类型。
BigInt 类型介绍
BigInt 是一种新的数据类型,用于表示任意大的整数。它可以表示比 Number 类型大得多的整数,甚至可以表示超过 JavaScript 引擎的内存限制的整数。
BigInt 类型的值必须以 n 结尾,例如:123456789012345678901234567890n,如果没有 n 结尾,会被解析为 Number 类型。
BigInt 类型的值可以使用普通的算术运算符进行计算,例如加减乘除、求余等。
BigInt 类型的使用
创建 BigInt 类型的值
BigInt 类型的值可以通过 BigInt() 函数来创建,例如:
const a = BigInt(123456789012345678901234567890); const b = 987654321098765432109876543210n;
BigInt 类型的运算
BigInt 类型的运算与普通的数值类型类似,可以使用加减乘除、求余等运算符进行计算,例如:
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; const c = a + b; // 1111111111111111111111111111111n const d = a - b; // -864197532086419753085802469320n const e = a * b; // 121932631137021795014161503211034789265377308000000000000000000000n const f = a / b; // 0n const g = a % b; // 123456789012345678901234567890n
需要注意的是,BigInt 类型的值不能与普通的数值类型进行运算,例如:
const a = 123456789012345678901234567890n; const b = 123456789012345678901234567890; const c = a + b; // TypeError: Cannot mix BigInt and other types, use explicit conversions
需要将普通的数值类型转换为 BigInt 类型后再进行运算,例如:
const a = 123456789012345678901234567890n; const b = BigInt(123456789012345678901234567890); const c = a + b; // 246913578024691357802469135780n
BigInt 类型的比较
与普通的数值类型不同,BigInt 类型的值不能直接使用比较运算符进行比较,例如:
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; const c = a > b; // TypeError: Cannot mix BigInt and other types, use explicit conversions
需要使用 BigInt 类型的比较运算符进行比较,例如:
const a = 123456789012345678901234567890n; const b = 987654321098765432109876543210n; const c = a > b; // false const d = a < b; // true const e = a === b; // false
BigInt 类型的应用
BigInt 类型可以应用于任何需要处理大整数的场景,例如加密算法、密码学、货币计算等。
下面是一个示例,用 BigInt 类型来计算斐波那契数列中的第 n 个数值:
-- -------------------- ---- ------- -------- ------------ - --- - - --- --- - - --- --- ---- - - -- - - -- ---- - --- -- - --- - - --- - ------ -- - ---------------------------- -- ----------------------展开代码
总结
BigInt 类型是 ECMAScript 2020 中引入的一种新的数据类型,用于表示任意大的整数。它可以解决 JavaScript 中 Number 类型的数值范围限制问题,适用于任何需要处理大整数的场景。在使用 BigInt 类型时,需要注意其与普通的数值类型的运算、比较等差异,需要使用 BigInt 类型的运算符进行计算。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6581ec01d2f5e1655dd28b0d