在 JavaScript 的新版本 ES11 中,新增加了对 BigInts 的支持。这使得 JavaScript 可以处理超出 Number 类型最大值的大整数运算,这对于那些需要进行精确计算的应用程序来说是一个重大的改进。
什么是 BigInts?
在 JavaScript 中,Number 类型最大值为 Number.MAX_SAFE_INTEGER
,这是一个 53 位的整数表示范围。当需要处理更大的整数时,就需要使用 BigInt 类型。BigInt 可以表示任意大小的整数,没有一个上限,且后缀为 n
。
例如:
const bigNumber = 1234567890123456789012345678901234567890n;
BigInts 的新特性
在 ES11 中,BigInts 内置了一些新的特性,包括以下内容:
1. BigInts 可以通过 Math 对象中的新方法进行算术运算
在 ES11 中,Math 对象新增了一些方法,可以对 BigInts 进行算术运算,例如对 BigInt 进行乘法运算:
console.log(Math.imul(123456789n, 987654321n)); // 121932631137573949n
2. 支持像数字一样进行比较
在 ES11 中,BigInts 支持像数字一样进行比较操作,如大于(>
)、小于(<
)、等于(===
)。这就使得我们可以更直接地使用 BigInts 进行比较操作。
console.log(100n > 10n); // true console.log(10n < 0n); // false console.log(100n === 100n); // true
3. 与常规数字类型可以共存
在 ES11 中,BigInts 和常规数字类型可以自然地共存。这就表示可以在需要时无缝切换两者之间,因此,在现有代码中使用 BigInts 并不需要改变原有代码的结构。
const normalNumber = 999; const bigNumber = 1234567890123456789012345678901234567890n; console.log(normalNumber + bigNumber); // 1234567890123456789012345678901234567889n console.log(bigNumber - normalNumber); // 1234567890123456789012345678901234567089n
BigInts 的用途
BigInts 的引入,能够帮助开发人员解决一些之前难以处理的数据问题,例如:
1. 处理加密和哈希
在某些密码学运算中,需要进行多次模幂运算,导致中途数字会超出 JavaScript 的 Number 类型最大值,这个情况下,可以使用 BigInt 类型。
2. 创建唯一 ID
在涉及大量操作的系统中,需要对每个对象都有一个唯一的标识符。如果每个标识符均为 Number 类型,则一段时间后会发生重复。而使用 BigInt 类型,可以创建大量唯一的 ID。
3. 处理与服务器连接的时间戳
与服务器连接时,获取到的时间戳可能会超出 JavaScript 的 Number 类型最大值,这将导致时间戳无法处理。在这个情况下就可以使用 BigInt 类型。
总结
BigInts 的引入为 JavaScript 带来很多新的可能性,可以解决数字太大无法计算的问题,加强了 JavaScript 在数值计算和密码学方面的能力。同时,BigInts 也可以和常规数字类型一起使用,使得我们可以无缝切换它们之间,而无需修改现有代码的行为。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64a4effd48841e989415cc54