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
比较
BigInt
和Number
不是严格相等的,但是宽松相等的
0n === 0
// ↪ false
0n == 0
// ↪ true
Number
和BigInt
可以进行比较
1n < 2
// ↪ true
2n > 1
// ↪ true
2 > 2
// ↪ false