BigInt
数据类型的目的是比Number
数据类型支持的范围更大的整数值。
BigInt构造函数:
let z = BigIng("163653091258181994")//163653091258181994n
Number
类型只能安全地表示-9007199254740991 (-(2^53-1
)) 和9007199254740991(2^53-1
)之间的整数
JS 提供Number.MAX_SAFE_INTEGER
常量来表示 最大安全整数,Number.MIN_SAFE_INTEGER
常量表示最小安全整数:
const minInt = Number.MIN_SAFE_INTEGER;
console.log(minInt); // → -9007199254740991
console.log(minInt - 5); // → -9007199254740996
// notice how this outputs the same value as above
console.log(minInt - 4); // → -9007199254740996
不能使用严格相等运算符将BigInt
与常规数字进行比较,因为它们的类型不同:
console.log(10n === 10); // → false
console.log(typeof 10n); // → bigint
console.log(typeof 10); // → number
与BigInt
操作数一起使用时,算术运算符应该返回BigInt
值。因此,除法(/)
运算符的结果会自动向下舍入到最接近的整数。例如:
25 / 10; // → 2.5
25n / 10n; // → 2n
BigInt和Number
执行算术计算,首先需要确定应该在哪个类型中执行该操作。为此,只需通过调用Number()或BigInt()
来转换操作数:
BigInt(10) + 10n; // → 20n
// or
10 + Number(10n); // → 20
当 Boolean
类型与BigInt
类型相遇时,BigInt
的处理方式与Number
类似,换句话说,只要不是0n
,BigInt就被视为truthy
的值:
if (5n) {
// 这里代码块将被执行
}
if (0n) {
// 这里代码块不会执行
}
位操作符如|、&、<<、>>和^
对Bigint
的操作方式与Number类似
。下面是一些例子
90 | 115; // → 123
90n | 115n; // → 123n
90n | 115; // → TypeError
不能使用Number
和BigInt
操作数的混合执行算术运算
,需要通过显式转换其中的一种类型。 此外,出于兼容性原因,不允许在BigInt
上使用一元加号(+)
运算符。
Boolean
Null
Undefined
Number
BigInt
String
Symbol
Object
网友评论