HJY-xh / plantTrees

每天几个前端小知识📙 2021.2.14 - new Date()
MIT License
22 stars 4 forks source link

[2021-4-2] ES2020的BigInt特性是什么? #112

Open HJY-xh opened 3 years ago

HJY-xh commented 3 years ago

JavaScript能处理的最大数字是2的53次方,我们可以使用Number的MAX_SAFE_INTEGER属性得到这个值。 看个🌰

const max = Number.MAX_SAFE_INTEGER;
console.log(max); // 9007199254740991

如果超过了这个安全范围,就会出现一些错误情况。 看个🌰

console.log(max + 1); // 9007199254740992
console.log(max + 2); // 9007199254740992
console.log(max + 3); // 9007199254740994
console.log(Math.pow(2, 53) == Math.pow(2, 53) + 1); // true

我们可以使用新的BigInt数据类型来解决这个问题。通过把字母n放在末尾,我们可以开始使用并与大得离谱的数字进行交互。我们无法将标准数字与BigInt数字混合在一起,因此任何数学运算都需要使用BigInt来完成。 看个🌰

const bigNum = 100000000000000000000000000000n;
console.log(bigNum + 1n); // 100000000000000000000000000001n