ES12 中 BigInt 类型全地图及详解

在 JavaScript 中,整数的数值范围是 -253 ~ 253-1,这个取值范围对于大多数情况已经足够了。但是,在某些场景下,需要处理更大的整数值,此时就需要使用 BigInt 类型。

BigInt 是什么

BigInt 是一种新的原始数据类型,用于表示任意精度的整数。它可以表示更大的整数范围,目前官方支持的最大值为 253-1,但是 BigInt 可以表示比这个范围更大的整数。

如何使用 BigInt

在 JavaScript 中,可以通过在整数值后面添加 n 或者使用 BigInt() 函数来创建 BigInt 类型值。

const bigIntValue = 1234567890123456789012345678901234567890n;
const anotherBigInt = BigInt("72921265765431265431265498751231235654987");

需要注意的是,在计算过程中,BigInt 类型和普通整数类型不能混合使用,需要使用 BigInt() 函数进行转换。

const a = 123n;
const b = 456;
console.log(a * b); // TypeError: Cannot mix BigInt and other types, use explicit conversions
console.log(a * BigInt(b)); // 56088n

BigInt 类型的操作

在 BigInt 类型上,支持的操作和 Number 类型基本上一致,只需要在操作符前面加上 n 以及使用 BigInt() 函数进行转换即可。

const a = 123n;
const b = 456n;
const c = BigInt("-789");

console.log(a + b); // 579n
console.log(b - c); // 1245n
console.log(a * BigInt("100")); // 12300n
console.log(b / 5n); // 91n
console.log(c ** 2n); // 622521n

除了基本的算术运算符号外,BigInt 类型还支持很多其他的操作符号,例如:&|^~ 等位运算符,以及 >><<>>> 等移位运算符等。

BigInt 类型还有一些方法,例如:toString()toLocaleString()valueOf() 等用于转换成字符串、数值字符串和数值类型。

BigInt 类型的限制和注意事项

BigInt 类型在使用时,有一些限制和注意事项:

  • BigInt 类型不能和普通整数类型以及字符串类型混合使用,需要进行类型转换。

  • 在比较两个不同类型的数值时,需要使用 ==!= 进行比较,不支持 ===!== 进行严格比较。

  • 因为 BigInt 类型的数值比较大,所以在使用时要注意内存的消耗,避免使用过多的内存。

总结

BigInt 类型是 JavaScript 中的一种新的原始数据类型,用于表示任意精度的整数,能够解决普通整数类型表示范围过小的问题。在使用 BigInt 类型时,需要注意到和普通整数类型以及字符串类型的区别和限制,以及内存的消耗问题。

此外,BigInt 类型还支持基本的算术运算符以及位运算符、移位运算符等一系列操作符,可以很方便的使用 BigInt 类型进行算术运算。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/65b74627add4f0e0fffd8b43