ECMAScript 2020(ES11)新特性:对 BigInt 扩展操作的支持

阅读时长 4 分钟读完

随着计算机科学的不断发展,数字的大小和精度也不断提高。在 JavaScript 中,原来的数字类型只能表示 53 位的整数,对于更大的数字就需要借助第三方库或者手动实现。但在 ES11 中,引入了 BigInt 类型,可以轻松地处理更大的整数。

BigInt 类型

BigInt 类型是 ES11 中引入的新类型,它可以表示任意大小的整数,而不会溢出。BigInt 类型的值必须以 n 结尾,例如:

BigInt 类型与普通数字类型有很多区别:

  • BigInt 类型的值不能与普通数字类型进行混合运算,必须使用 BigInt 类型的函数或运算符。
  • BigInt 类型不能用于位运算或右移运算。
  • BigInt 类型不能用于 Math 对象中的函数。
  • BigInt 类型的值不能与字符串进行混合运算,必须使用 BigInt 类型的函数或运算符。

BigInt 的运算

BigInt 类型的运算与普通数字类型的运算有很多相似之处,例如加、减、乘、除等。但是也有一些不同之处,例如:

  • BigInt 类型的加、减、乘、除运算,需要使用 BigInt 类型的函数或运算符,例如 BigInt()+-*/% 等。
  • BigInt 类型的除法运算结果只保留整数部分,不保留小数部分。
  • BigInt 类型的取模运算结果与普通数字类型的取模运算结果一致。

下面是一些 BigInt 类型的运算示例:

BigInt 的扩展操作

在 ES11 中,对 BigInt 类型进行了扩展操作的支持,包括:

1. BigInt.asUintN(width, bigint)

该函数返回一个 width 位的无符号整数,其中 bigint 为 BigInt 类型的值。如果 bigint 的值超过了 width 位,则将其截断为 width 位,只保留最低的 width 位。

2. BigInt.asIntN(width, bigint)

该函数返回一个 width 位的有符号整数,其中 bigint 为 BigInt 类型的值。如果 bigint 的值超过了 width 位,则将其截断为 width 位,只保留最低的 width 位。

3. BigInt.prototype.toJSON()

该函数返回一个 BigInt 类型的值的 JSON 格式的字符串。

指导意义

BigInt 类型的引入,使得 JavaScript 可以处理更大的整数,对于一些需要处理大整数的场景,例如密码学、加密算法、数值计算等,将会有很大的帮助。同时,BigInt 的扩展操作也为处理大整数提供了更多的便捷和灵活性,使得开发者可以更加高效地处理大整数。

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

纠错
反馈