简述
BigInt数据类型提供了一种方法来表示大于2^53-1的整数。BigInt可以表示任意大的整数
作用
解决精度缺失的问题:BigInt数据类型比Number类型支持更大的整数值,Number类型只能安全的支持-9007199254740991(-(2^53-1)) 和 9007199254740991(2^53-1)之间的整数,任何超过这个范围的数值都会失去精度;而BigInt可以解决这个问题(下面会讲如何使用BigInt)
举例:
console.log(9007199254740999) //9007199254741000
console.log(9007199254740993===9007199254740992) //true
如图,当数值超过Number数据类型支持的安全范围值时,将会被四舍五入,从而导致精度缺失的问题
适用场景举例
更加准确的使用时间戳和数值比较大的ID
BIgInt如何使用
1.在整数的末尾追加n
console.log(9007199254740999n)//9007199254740999
2.调用BigInt()构造函数
var bigInt = BigInt(“9007199254740999”);
console.log(bigInt) //9007199254740999n
BigInt构造函数
(1)传递给BigInt()的参数将自动转换为BigInt:
BigInt(“2”); // → 2n
BigInt(2); // → 2n
BigInt(true); // → 1n
BigInt(false); // → 0n
(2)无法转换的数据类型和值会引发异常:
BigInt(10.3); // → RangeError: Cannot convert null to a BigInt
BigInt(null); // → TypeError: Cannot convert null to a BigInt
BigInt(“a”); // → SyntaxError: Cannot convert a to a BigInt
备注:
(1)BigInt除了不能使用一元加号运算符外,其他的运算符都可以使用
console.log(+1n) // Uncaught TypeError: Cannot convert a BigInt value to a number
(2)BigInt和Number之间不能进行混合操作
console.log(1n+5)
//Uncaught TypeError: Cannot mix BigInt and other types, use explicit conversions