你真的了解 ECMAScript 2021 对 BigInt 的新特性吗?

· 约 6 分钟读完

简介

JavaScript 作为一门流行的编程语言,经常会遇到需要处理大整数的情况。在以前的 ECMAScript 标准中,处理大数常常需要借助第三方库。但是,随着 ECMAScript 2021 的发布,现在可以使用内置的 BigInt 对象轻易地处理大数。

在本篇文章中,我们将会深入探讨 ECMAScript 2021 对 BigInt 的新特性,详细介绍大数的处理方法和应用场景,希望能够对读者有所帮助。

BigInt 的定义和创建

BigInt 对象表示任意大小的整数。与 Number 不同,BigInt 可以处理超出 JavaScript 限制数值范围的大数。在创建 BigInt 时需要添加后缀 n,以示这是 BigInt 类型。

需要注意的是,在将 BigInt 赋值给变量时,变量应该使用 let 或 const 声明,因为 BigInt 不能直接转换为普通的 Number。

BigInt 的算术运算和比较

与普通的 Number 类型不同,BigInt 类型需要使用 BigInt 对象进行算术运算和比较。

需要注意的是,不能使用普通的 <, >, <=, >= 操作符直接比较 BigInt 和 Number 类型的值。但是可以使用比较运算符 ==, !=, ===, !== 对 BigInt 和 Number 进行比较,因为会在比较前将 BigInt 转换为 Number 类型。

BigInt 的运算方法

与普通的数字类型不同,BigInt 还有一些独特的运算方法。下面列出了一些常用的方法和使用示例。

toString 和 parseInt

toString 方法可以将 BigInt 转换为字符串类型。

需要注意,仅将 BigInt 来源于字符串进行转换会导致错误。

与之相反的,parseInt 可以将字符串转换为 BigInt。需要指定进制。

十进制和二进制表示

toString 方法中可以指定转换后的进制,例如:

需要注意的是,在创建 BigInt 对象时,也可以使用二进制、八进制或十六进制表示。

pow

pow 方法用于对 BigInt 进行幂运算。需要注意的是,当指数超出范围时会报错。

需要注意,使用 Math.pow 方法时会将 BigInt 转换为普通数值类型,因此不适用于 BigInt 运算。

mod

mod 方法用于取模运算。需要注意,当模数为 0 时会报错。

abs

abs 方法用于求取 BigInt 的绝对值。

bit 位运算

BigInt 还可以使用二进制的位运算,包括按位与、按位或、按位异或等。需要注意的是,BigInt 中二进制数的最左侧为符号位,而不是普通的 2 的 63 次方。

需要注意,BigInt 还支持无符号右移运算符 >>>。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d7dd59a941bf7134e116fc