在 ECMAScript 2019 中,新增了一个 BigInt 原始类型,用于表示任意精度的整数。在之前的版本中,JavaScript 只能表示 53 位以内的整数,超出这个范围的整数会出现精度丢失的问题。而 BigInt 类型则可以表示任意位数的整数,解决了这个问题。
BigInt 的使用
BigInt 类型的值必须以 n 结尾,例如:
const bigNum = 1234567890123456789012345678901234567890n;
BigInt 类型的值可以和 Number 类型的值进行运算,但是需要注意的是,两个类型的值不能直接进行运算,需要先将其中一个类型的值转换为另一个类型。例如:
const bigNum = 1234567890123456789012345678901234567890n; const num = 123; console.log(bigNum + BigInt(num)); // 输出 1234567890123456789012345678901234568013n
BigInt 的方法
BigInt 类型的值也可以使用一些方法,例如:
BigInt.prototype.toString()
将 BigInt 类型的值转换为字符串。
const bigNum = 1234567890123456789012345678901234567890n; console.log(bigNum.toString()); // 输出 "1234567890123456789012345678901234567890"
BigInt.prototype.valueOf()
返回 BigInt 类型的值的原始值。
const bigNum = 1234567890123456789012345678901234567890n; console.log(bigNum.valueOf()); // 输出 1234567890123456789012345678901234567890n
BigInt.asUintN()
将 BigInt 类型的值转换为一个指定位数的无符号整数。
const bigNum = 1234567890123456789012345678901234567890n; console.log(BigInt.asUintN(32, bigNum)); // 输出 2396410570n
注意事项
需要注意的是,BigInt 类型的值不能和普通的 Number 类型的值进行比较,例如:
const bigNum = 1234567890123456789012345678901234567890n; const num = 123; console.log(bigNum > num); // 报错
需要使用 BigInt 类型的值进行比较,例如:
const bigNum = 1234567890123456789012345678901234567890n; const num = 123; console.log(bigNum > BigInt(num)); // 输出 true
总结
在 ECMAScript 2019 中,BigInt 原始类型的引入解决了 JavaScript 中整数精度丢失的问题,使得 JavaScript 可以表示任意位数的整数。同时,BigInt 类型的值可以和 Number 类型的值进行运算,可以使用一些方法进行操作。需要注意的是,BigInt 类型的值不能和普通的 Number 类型的值进行比较,需要使用 BigInt 类型的值进行比较。
来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/655eed7ad2f5e1655d90f9d8