JavaScript 是一门弱类型语言,其内置类型只包含原始类型和对象类型,其中原始类型包括数字、字符串、布尔值、null 和 undefined 等。在 ES8 中,我们可以看到新增了一种原始类型:BigInt,它使得 JavaScript 适合处理更大的数字。
什么是 BigInt
BigInt 是一种全新的数据类型,可以处理超出 JavaScript 数字数据类型范围的整数。在 JavaScript 中,数字数据类型的范围是 $-2^{53} \sim 2^{53}$,超出这个范围的数字会出现精度问题。而 BigInt 类型可以支持任意精度的整数。
BigInt 值可以通过在整数末尾添加 n
或者通过 BigInt() 工厂函数创建。例如:
const bigInt1 = 9007199254740991n; const bigInt2 = BigInt(2 ** 53);
BigInt 值和 Number 值是不一样的,它们不能相互转换。如果需要使用 BigInt 值和 Number 值进行计算,需要使用 BigInt() 函数将 Number 类型转换为 BigInt 类型。
BigInt 的运算
BigInt 最常见的运算就是加、减、乘和除,与 Number 类型不同,BigInt 值不能使用上面的算术操作符进行计算。所以,在进行算术计算时,需要使用 BigInt 对象上的方法:
-- -------------------- ---- ------- ----- ------- - ------------ ----- ------- - ------------ ----- --- - ------- - -------- -- -- ----- ---- - --------------------- -- ---- ----- ---------- - -------------------------- -- ----- ----- ------- - -------------------------- -- ------ ----- -------- - ------------------------ -- --
在以上示例代码中,我们演示了BigInt中的运算。我们使用 BigInt() 函数将数字转换为 BigInt 类型,然后使用 BigInt 上的方法进行计算。
BigInt 和普通数字类型的比较
由于 BigInt 和普通数字类型不同,所以它们不会相等。与 NaN 值不同,BigInt 值是可比较的。我们使用常规操作符 <、<=、>、>=、==、!=
进行比较BigInt 对象中的值。
const bigInt1 = BigInt(500); const bigInt2 = BigInt(1000); console.log(bigInt1 > 400); // true console.log(bigInt2 < 2000); // true console.log(bigInt1 == 500); // true console.log(bigInt2 != 1000); // false console.log(bigInt1 == 500n); // true
在以上示例代码中,我们比较了 BigInt 和数字类型数据的值。可以看到,BigInt 值和数字类型值的比较操作方法是一样的。
使用 BigInt 的注意事项
虽然 BigInt 带来了更大的数值处理能力,但在使用 BigInt 时需要注意以下几个点:
- 在变量赋值时,需要加上后缀 n,例如:
const bigInt = 1000000000000000000n;
- BigInt 值不能和普通数字类型的值混合使用,否则会抛出 TypeError;
- BigInt 值也不能使用运算符
**
,必须使用自带的数学运算方法; - 注意 BigInt 与 Number 类型之间的区别。
总结
ES8 中的 BigInt 特性带来了 JavaScript 中处理大整数的能力。通过使用BigInt,我们可以处理超出 JavaScript 数字类型的范围的整数,并进行运算,使得代码更加清晰、简单,并提高了 JavaScript 处理数值的有效性和准确性。
以上是 ES8 中 BigInt 的介绍和使用。我相信在实际的开发中,使用 BigInt 类型可以提高代码的效率和性能,帮助我们更好地解决实际的问题。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6452bd94968c7c53b073c55d