中的是一种新的数据类型,用于处理大数运算bigint最大值,即超过类型所能表示的范围的整数。
是一种基本数据类型( data type)。
中可以用 表示的最大整数为 2^53 - 1,可以写为 .。如果超过了这个界限,可以用 来表示,它可以表示任意大的整数。
数据类型是用来表示那些已经超出了 类型最大值的整数值,对于总是被诟病的整数溢出问题,使用了 后将完美解决。
语法
在一个整数字面量后加 n 的方式定义一个 ,如:10n 或者调用函数 ():
const theBiggestInt: bigint = 9007199254740991n
const alsoHuge: bigint = BigInt(9007199254740991)
const hugeString: bigint = BigInt("9007199254740991")
theBiggestInt === alsoHuge // true
例如,类型的值可以这样定义:
const a = 123456789012345678901234567890n;
const b = BigInt(123456789012345678901234567890);
类型支持与类型相同的算术运算符和逻辑运算符,但需要特别注意一些细节。例如,类型与类型之间的加法运算需要使用()方法将类型转换为类型后再进行运算bigint最大值,否则会出现精度丢失的问题。
const a = 123456789012345678901234567890n;
const b = 123456789012345678901234567890;
const c = a + BigInt(b); // 正确:246913578024691357802469135780n
const d = a + b; // 错误:精度丢失,得到的结果是246913578024691357802469135779
需要注意的是,由于类型是中新增的特性,因此在一些旧版本的环境中可能无法使用。
类型信息
使用 检测类型时, 对象返回 :
typeof 10n === 'bigint' // true
typeof BigInt(10) === 'bigint' // true
typeof 10 === 'number' // true
typeof Number(10) === 'number' // true
运算
可以正常使用 +、-、*、/、**、% 符号进行运算:
const previousMaxSafe: bigint = BigInt(Number.MAX_SAFE_INTEGER) // 9007199254740991n
const maxPlusOne: bigint = previousMaxSafe + 1n // 9007199254740992n
const multi: bigint = previousMaxSafe * 2n // 18014398509481982n
const subtr: bigint = multi – 10n // 18014398509481972n
const mod: bigint = multi % 10n // 2n
const bigN: bigint = 2n ** 54n // 18014398509481984n
比较 与 条件
和 可以进行比较:
0n === 0 // false
0n == 0 // true
1n 1 // true
2 > 2 // false
2n > 2 // false
2n >= 2 // true
条件判断:
if (0n) {
console.log('条件成立!');
} else {
console.log('条件不成立!'); // 输出结果
}
0n || 10n // 10n
0n && 10n // 0n
Boolean(0n) // false
Boolean(10n) // true
!10n // false
!0n // true
代码解释:
后面会有一节介绍 与 Falsy,这里先简单提下。除了明确的 true 和 false 两个 类型外, 可以在需要用到布尔类型值的上下文中使用强制类型转换将值转换为布尔值。
比如 0 是假,10 是真。那么,同样的,0n 是假,10n 是真。
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。