跳到主要内容

BigInt

BigInt是一种内置对象,它提供了一种方法来表示大于2^53 - 1的整数。这原本是Javascript中可以用 Number表示的最大数字。BigInt可以表示任意大的整数。

语法


可以在整数字面量后面加 n 的方式定义一个 BigInt
const theBiggestInt = 9007199254740991n;
可以调用函数 BigInt()的方式定义一个 BigInt
const alsoHuge = BigInt(9007199254740991);

特点


  • 不能用于 Math 对象中的方法

  • 不能和任何Number实例混合运算,两者必须转换成同一种类型: 在两种类型来回转换时要小心,因为 BigInt 变量在转换成 Number 变量时可能会丢失精度。

    const bigInt = 9007199254740994n;
    // console.log(bigInt + 10); // 注意: bigInt 数字不可以与 number 类型相加 Cannot mix BigInt and other types, use explicit conversions
    console.log(bigInt + 10n); // 9007199254741004n
    console.log(bigInt + BigInt(10)); // 9007199254741004n
    • 对任何 BigInt 值使用 JSON.stringify() 都会引发 TypeError: 因为默认情况下 BigInt 值不会在 JSON 中序列化。

检测


使用typeof测试时,BigInt对象返回bigint

typeof 1n === 'bigint'; // true
typeof BigInt('1') === 'bigint'; // true

比较


BigIntNumber不是严格相等的,但是宽松相等的

0n === 0
// ↪ false

0n == 0
// ↪ true

NumberBigInt可以进行比较

1n < 2
// ↪ true

2n > 1
// ↪ true

2 > 2
// ↪ false