新增基本类型 BigInt
一、BigInt 的定义
ES10 新增的第七种基本数据类型,用来处理超过 2 的 53 次方以外的数。
const a = 11n
console.log(a) // 11n
console.log(typeof a) // bigint 是数字,可以进行运算
二、BigInt 的属性
1、BigInt.asIntN()
BigInt.asIntN(width, bigint);
功能:将 BigInt 值转换为一个 -2width-1 与 2width-1-1 之间的有符号整数。
参数:
- width(必须):可存储整数的位数。
- bigint(必须):要存储在指定位数上的整数。
返回值:bigint 模(modulo) 2width 作为有符号整数的值。
示例:
// 保持在64位范围内
const max = 2n ** (64n - 1n) - 1n;
BigInt.asIntN(64, max);
// ↪ 9223372036854775807n
BigInt.asIntN(64, max + 1n);
// ↪ -9223372036854775808n
// negative because of overflow
2、BigInt.asUintN()
BigInt.asUintN(width, bigint);
功能:将 BigInt 转换为一个 0 和 2width-1 之间的无符号整数。
参数:
- width(必须):可存储整数的位数。
- bigint(必须):要存储在指定位数上的整数。
返回值:bigint 模(modulo) 2width 作为无符号整数的值。
示例:
// 保持在64位范围内
const max = 2n ** 64n - 1n;
BigInt.asUintN(64, max);
// ↪ 18446744073709551615n
BigInt.asUintN(64, max + 1n);
// ↪ 0n
// zero because of overflow
3、BigInt.prototype.toString()
bigIntObj.toString([radix])
功能:返回一个字符串,表示指定 BigInt 对象。后面的 "n" 不是字符串的一部分。
参数:radix(可选):介于 2 到 36 之间的整数,指定用于表示数值的基数。
返回值:表示指定 BigInt 对象的字符串。
示例:
console.log(1024n.toString());
// "1024"
console.log(1024n.toString(2));
// "10000000000"
console.log(1024n.toString(16));
// "400"
4、BigInt.prototype.toLocaleString()
bigIntObj.toLocaleString([locales [, options]])
功能:返回一个字符串,该字符串具有此 BigInt 的 language-sensitive 表达形式。
参数:
- locales(可选):缩写语言代码。
- options(可选):一些特定属性的类:
返回值:
具有此 BigInt 的 language-sensitive 表示形式的字符串。
示例:
const bigint = 123456789123456789n;
console.log(bigint.toLocaleString('de-DE'));
// "123.456.789.123.456.789"
console.log(bigint.toLocaleString('de-DE', { style: 'currency', currency: 'EUR' }));
// "123.456.789.123.456.789,00 €"
5、BigInt.prototype.valueOf()
bigIntObj.valueOf()
功能:返回 BigInt 对象包装的原始值。
参数:无
返回值:指定 BigInt 对象的原始 BigInt 值。
示例:
console.log(typeof Object(1n));
// "object"
console.log(typeof Object(1n).valueOf());
// "bigint"