BigInt是独立原始类型,需显式声明:字面量加n后缀(如123n),构造函数仅接受字符串或安全整数,运算符要求全为BigInt,比较时抽象相等会隐式转换但严格相等返回false。
javascript 中 bigint 类型的语法细节核心在于“显式声明”和“类型隔离”——它不是 number 的扩展,而是一个独立原始类型,所有操作都需严格遵循其语法规则。
字面量写法:必须带 n 后缀
BigInt 字面量只能通过在整数末尾加小写字母 n 创建:
-
123n、-456n、0n是合法的 -
1.23n、1e6n、0x123n(十六进制)均报语法错误 - 支持二进制
0b101n、八进制0o777n、十六进制0xffn,但必须是整数形式
构造函数:只接受字符串或安全整数
BigInt() 是唯一合法调用方式,不能用 new:
-
BigInt("9007199254740992")✅ 推荐:字符串入参避免 Number 先解析失真 -
BigInt(9007199254740992)✅ 仅当该值在安全整数范围内(≤Number.MAX_SAFE_INTEGER) -
BigInt(10.5)❌ 报TypeError;BigInt(null)或BigInt(undefined)同样报错
运算符使用:全为 BigInt 类型参与
算术与位运算要求操作数类型一致:
- 支持:
+、-、*、**、%、&、|、^、<<、>> -
/会向零截断(7n / 2n === 3n),不产生小数结果 -
>>>(无符号右移)不支持,会抛出异常 -
+、-等若混入 Number,立即报TypeError
比较与类型判断:区分抽象与严格相等
比较行为需特别注意:
立即学习“Java免费学习笔记(深入)”;
-
10n == 10返回true(抽象相等隐式转换,不推荐) -
10n === 10返回false(类型不同) -
10n > 5允许跨类型比较,返回true,但建议统一为10n > 5n - 判断类型用
typeof value === 'bigint',而非instanceof


















