BigInt是JavaScript的一个内置对象,它提供了一种方法来表示大于2^53-1(Number的最大值)的整数,BigInt可以表示任意的整数。
可以用一个数字后面加n表示BigInt整数,也可以用不带new关键字的构造器来创建,比如:
9007199254740991n;
BigInt(9007199254740991);
// ↪ 9007199254740991n
BigInt("9007199254740991");
// ↪ 9007199254740991n
BigInt("0x1fffffffffffff");
// ↪ 9007199254740991n
BigInt("0b11111111111111111111111111111111111111111111111111111");
// ↪ 9007199254740991n
BigInt与Number对象的区别:
1、不能用于Math对象中的方法。
2、不能于Number实例进行混合运算。
3、BigInt转Number时,需注意精度的丢失。
类型信息
可以使用typeof来打印类型信息
typeof 20n === 'bigint'
// ↪ true
当使用Object包裹时,其类型变为Object
typeof Object(20n) === 'object'
// ↪ true
运算操作
BigInt与Number不能进行运算操作。BigInt不支持无符号>>>运算符,这是因为BigInt是有符号的。
BigInt与Number的比较
BigInt与Number是可以进行宽松意义上的比较的。
10n == 10
// ↪ true
10n === 10
// ↪ false
BigInt的json序列化
任何的bigint都不能进行JSON.stringify序列化,这会引发TypeError异常,如果需要可以使用toString方法。
10n.toString()
// ↪ '10'