ES6/ES7 和 ES10 中的 BigInt 类型
在传统的 JavaScript 中,数字类型的范围有限,大数运算需要通过第三方库或手写算法来实现。但自 ES6/ES7 和 ES10 引入 BigInt 数据类型后,JavaScript 终于原生支持了大数运算。
BigInt 数据类型介绍
BigInt 是一种新的 JavaScript 原生数据类型,其可以表示更大范围的整数,超出了传统的 Number 类型所能表示的范围。BigInt 类型的数值使用 n 结尾,例如:10n。
BigInt 的类型最大有效范围是 -2<sup>53</sup> ~ 2<sup>53</sup>-1 之间的整数(即 Number 安全整数范围),而超过这个范围的整数可以使用 BigInt 类型来表示。
BigInt 的操作和用法
创建 BigInt
BigInt 类型的数据可以用普通的整数创建,也可以通过 BigInt 构造函数进行创建,如下所示:
const big1 = BigInt(123); // 通过 BigInt 构造函数创建 const big2 = 456n; // 直接赋值给 BigInt 变量
运算操作
BigInt 类型支持加、减、乘、除等基本数学运算操作,如下所示:
const big1 = 123456789012345678n; const big2 = 987654321098765432n; console.log(big1 + big2); // 1111111111111111110n console.log(big1 - big2); // -864197532086419754n console.log(big1 * big2); // 121932631137021795107178688959419026n console.log(big1 / big2); // 0n
需要注意的是,BigInt 类型和 Number 类型是不能混合进行运算的,否则会抛出错误。
数值转换
BigInt 类型和 String 类型之间可以进行隐式或显式的转换,如下所示:
const big = 123456789012345678n; console.log(big.toString()); // '123456789012345678' console.log(String(big)); // '123456789012345678'
同时 BigInt 类型也支持和 Number 类型之间的转换,但是需要注意可能会丢失精度,如下所示:
const big = BigInt('123456789012345678'); const num = Number(big); console.log(num); // 1.2345678901234568e+17
其他操作
BigInt 类型也支持位运算、逻辑运算等操作,如下所示:
const big1 = 123n; const big2 = 456n; console.log(big1 & big2); // 88n console.log(big1 | big2); // 491n console.log(big1 ^ big2); // 403n console.log(!big1); // false
ES6/ES7 和 ES10 中的 BigInt 类型新功能
ES6/ES7
ES6/ES7 中的 BigInt 类型主要是引入了新的数据类型和一些基本的操作功能,同时还引入了 BigInt 在函数参数和返回值中的使用。
新数据类型(BigInt)
BigInt 的数据类型转换(toString、String、Number)
基本操作符(+、-、*、/、%, **、<、>、<=、>=、==、!=、===、!==、Bitwise Operators)
BigInt 在函数中的使用(参数类型 BigInt 和返回值类型 BigInt)
ES10
ES10 在 ES6/ES7 的基础上,主要是加强了 BigInt 类型在 ECMAScript 中的使用,引入了 BigInt 库函数,实现了基本的大数计算功能。
BigInt 数组功能(BigInt64Array 和 BigUint64Array)
BigInt64Array 和 BigUint64Array 数组的方法(set、subarray、reverse、sort 等)
Math 对象的函数支持 BigInt 参数
BigInt 对象的函数支持(asUintN、asIntN、asUint8Array)
总结
通过 ES6/ES7 和 ES10 引入 BigInt 数据类型,JavaScript 终于可以原生支持大数运算,便于前端开发者进行大数计算,提高了代码的可读性和可维护性。
如果您需要进行大数计算,不妨考虑使用 ES6/ES7 和 ES10 中的 BigInt 类型,其为你的高精度计算提供了方便和快捷的支持。
示例代码:
-- -------------------- ---- ------- -- -- ------ ----- ---- - ------------ -- -- ------ ------ ----- ---- - ----- -- ----- ------ -- -- ---- ----- ---- - -------------------- ----- ---- - -------------------- ---------------- - ------ -- -------------------- ---------------- - ------ -- -------------------- ---------------- - ------ -- ------------------------------------- ---------------- - ------ -- -- -- ---- ----- --- - -------------------- ---------------------------- -- -------------------- ------------------------- -- -------------------- -- ---- ----- ---- - ----- ----- ---- - ----- ---------------- - ------ -- --- ---------------- - ------ -- ---- ---------------- - ------ -- ---- ------------------- -- ----- -- -------------- --- ----- ----- - --- ------------------- --- --- ----- ----------------------------- ---- -- -------------- - -- - ----------------------------- -- -------------- - --- --- --- -- - -------------------------- -- -------------- - --- --- --- -- - -- ---- ------- ------ -- ----------------------------- -- ---- -- ------ ------- ------------------------------ -- -- --- - ----- -- -- ----------------------------- --- -- ------ -- --------------------- --------------- ------------------- --- --------------------- -- ---------- - -- -- -- -- -- -- -- -- -- -- -- - -展开代码
以上便是 ES6/ES7 和 ES10 中的 BigInt 类型的介绍和操作等细节,相信可以帮助前端开发者更好的使用 BigInt 数据类型和扩展大数计算功能。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/646b01a8968c7c53b0a74874