最近,JavaScript 的新版本 - ES11 增加了一个新的原始类型 BigInt,它可以用来表示任意大的整数。
在过去,以前的 JavaScript 版本只有 Number 类型表示数字,但在处理超出安全有效值范围的数字时会出现精度问题。BigInt 的出现解决了这个问题,BigInt 允许我们安全地处理比 Number 类型更大的数字。
使用 BigInt
BigInt 是大于 2<sup>53-1</sup> 的整数值。如果勉强在 Number 中处理大于这个范围的数字,将会失去精度并输出不准确的结果。这时你可以使用 BigInt 类型处理大数字,它的后缀为 n。例如:
const a = 123456789012345678901234567890n;
记住,任何缺少 n 后缀的数字字面量都将被解释为 Number 类型。
注意,在使用 BigInt 时,应该特别关注将其应用在有限的问题上,因为这种数据类型比 Number 类型复杂得多,需要更多的内存和处理时间。
BigInt 与普通值的比较
从技术上讲,BigInt 与常规的 JavaScript 变量不同,它们在内部处理接口上也不同。因此,当比较不同类型的值时,我们需要遵循一些规则。
例如:
100n == 100; 100n === 100; 1n == true; 0n == false;
在这个例子中,用 == 进行比较,BigInt 与 Number 都算可行。如果用 === 来进行比较,则会得到不相等的结果。因此,开发人员应该谨慎选择适当的比较操作符。
BigInt 的运算
BigInt 支持基本数学运算,例如 +、-、*、/、% 等。当使用这些运算符时,BigInt 会自动进行类型转换。
与其他 JavaScript 值不同,BigInt 还支持一些额外的运算,例如位运算符。例如:
let a = 2n ** 54n; let b = ~200n; let c = (a + 1n) & ~3n;
实际上,BigInt 运算中的位运算符并不多见,但它们对于一些高级算法来说是必不可少的。
示例
现在我们来看一个例子,在这个例子中,我们将演示如何使用 BigInt 处理更大的数字。
-- -------------------- ---- ------- -------- ------------ - -- -- --- --- - ------ --- - ------ - - ----------- - ---- - ---------------------------- -- -------- ---------------------------- -- -------------------- ----------------------------- -- ------------------------------------------------------------------------------------------------------------------------------------------------------------
这个函数计算一个很大的数字的阶乘,使用 BigInt 数据类型相当直接,无需转换或处理。如我们所见,BigInt 允许我们在 JavaScript 环境中处理更具有挑战性的计算,这是以前很难实现的。
总结
在这篇文章中,我们介绍了 ES11 中的 BigInt 数据类型。我们观察了它为大型数字提供安全和可靠计算的潜力,并演示了 BigInt 实际用例的示例。
在使用 BigInt 时,应该特别小心。虽然 BigInt 看起来并不比其他原始类型更难,但它们具有不同的运算和操作。务必要小心处理大型数字,总是谨慎行事。
这是一个新的、强大的功能,可以提高 JavaScript 的整体能力和可移植性。我们期待未来看到此功能用于创建更好的、更可靠的代码。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/648a898648841e98948aad70