在 ES10 中,引入了一个新的数据类型 BigInt,用于表示超出 JavaScript 数值范围的整数。在之前的版本中,JavaScript 只能表示 $-2^{53}$ 到 $2^{53}$ 的整数,而 BigInt 可以表示任意大的整数。
BigInt 的定义
BigInt 是一种新的基本数据类型,表示任意大的整数。它的定义方式与普通整数有所不同,需要在数字后面加上 n
或者调用 BigInt()
函数来定义。
const num = 123456789012345678901234567890n; const bigInt = BigInt("123456789012345678901234567890");
BigInt 的应用
BigInt 主要用于处理大整数运算,可以用于加密算法、哈希函数、数值计算等场景。下面是一些 BigInt 的应用示例。
大整数运算
由于 JavaScript 的整数范围有限,处理大整数运算时会出现溢出的问题。使用 BigInt 可以避免这个问题,例如计算斐波那契数列的第 100 个数。
// javascriptcn.com 代码示例 function fibonacci(n) { let a = 0n, b = 1n; for (let i = 0; i < n; i++) { [a, b] = [b, a + b]; } return a; } console.log(fibonacci(100)); // 354224848179261915075n
与普通整数的计算
BigInt 与普通整数之间可以进行加、减、乘、除等运算,但需要注意,操作数必须是同一类型的数据。
const bigInt = 123456789012345678901234567890n; const num = 123; console.log(bigInt + BigInt(num)); // 123456789012345678901234567013n console.log(bigInt - BigInt(num)); // 123456789012345678901234567767n console.log(bigInt * BigInt(num)); // 15185185015185185015015185184670n console.log(bigInt / BigInt(num)); // 1003713453201976036994132550n
位运算
BigInt 支持位运算,包括按位与、按位或、按位异或、左移、右移等操作。
const bigInt = 123456789012345678901234567890n; const num = 123; console.log(bigInt & BigInt(num)); // 106 console.log(bigInt | BigInt(num)); // 123456789012345678901234567975n console.log(bigInt ^ BigInt(num)); // 123456789012345678901234567869n console.log(bigInt << BigInt(num)); // 1573325529764568576187437085598720n console.log(bigInt >> BigInt(num)); // 600586793070274540361835521n
总结
本文介绍了 ES10 中引入的 BigInt 数据类型及其应用,包括定义方式、大整数运算、与普通整数的计算、位运算等。BigInt 可以解决 JavaScript 处理大整数运算时出现的溢出问题,适用于加密算法、哈希函数、数值计算等场景。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/6586bb2fd2f5e1655d11a62b