在 ES9 中,BigInt 是一种新的数据类型,它可以表示任意精度的整数。在以前的 JavaScript 版本中,整数的范围是 -2^53 ~ 2^53,超出这个范围的整数无法表示。而 BigInt 的出现,解决了这个问题。
BigInt 的定义
在 JavaScript 中,BigInt 是用后缀 n 来表示的。例如,1n 表示 BigInt 类型的整数 1。
BigInt 的类型是 object,通过 typeof 运算符返回的值是 "bigint"。
console.log(typeof 1n); // "bigint"
BigInt 的运算
BigInt 支持常见的算术运算符和逻辑运算符。但是,与普通的数字不同,BigInt 运算时不会发生溢出。
const a = 9007199254740991n; const b = 100n; const c = a + b; console.log(c); // 9007199254741091n
同时,BigInt 也支持位运算符,如按位与、按位或、按位异或等。
const a = 15n; // 00001111 const b = 7n; // 00000111 const c = a & b; // 00000111 console.log(c); // 7n
BigInt 的转换
在 BigInt 和普通数字之间进行转换时,需要使用 BigInt() 函数和 Number() 函数。
const a = 123n; const b = BigInt(123); console.log(a === b); // true const c = Number(a); console.log(c); // 123
需要注意的是,当 BigInt 转换为普通数字时,如果超出了普通数字的范围,会发生精度丢失的问题。
const a = 2n ** 53n; const b = Number(a); console.log(b); // 9007199254740992
BigInt 的应用
BigInt 的出现,为 JavaScript 提供了更加强大的数值计算能力。在实际应用中,我们可以使用 BigInt 来处理大整数的计算,如大数加减、大数乘除等。
下面是一个使用 BigInt 实现大数加法的示例代码。
// javascriptcn.com 代码示例 function add(a, b) { let result = ""; let carry = 0; const len = Math.max(a.length, b.length); for (let i = 0; i < len; i++) { const sum = BigInt(a[a.length - i - 1] || 0) + BigInt(b[b.length - i - 1] || 0) + BigInt(carry); result = (sum % 10n) + result; carry = sum / 10n; } if (carry > 0n) { result = carry + result; } return result; } console.log(add("999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999", "1")); // 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
总结
BigInt 是 ES9 中新增的一种数据类型,可以表示任意精度的整数。它的出现,为 JavaScript 提供了更加强大的数值计算能力。在实际应用中,我们可以使用 BigInt 来处理大整数的计算。但需要注意的是,BigInt 和普通数字之间的转换可能会发生精度丢失的问题。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/657c23fad2f5e1655d6ea8e1