JavaScript中NaN与BigInt组合返回异常类型的原因请教
问题解析
你遇到的并非“无对应说明的类型”,而是运算符优先级与隐式类型转换共同作用的结果,以下是两行代码的具体执行逻辑:
第一行代码:console.log(typeof 1n+NaN);
- 首先,
typeof的优先级高于+,先执行typeof 1n:1n是BigInt类型,typeof返回字符串"bigint"。 - 接着执行字符串与
NaN的加法操作:JavaScript中字符串与其他类型相加时,会将非字符串类型转为字符串,NaN转字符串的结果是"NaN",因此最终输出的是字符串"bigintNaN",类型为string。
第二行代码:console.log(typeof NaN+1n);
- 同样先执行
typeof NaN:NaN的类型是number,typeof返回字符串"number"。 - 然后执行字符串与
1n(BigInt)的加法:BigInt会被转为字符串"1n",最终输出的是字符串"number1n",类型为string。
你觉得官方文档无对应说明,是因为这不是单一内置类型的特殊规则,而是typeof运算符返回规则、运算符优先级、不同类型隐式转换规则三者结合的结果,这些规则在ECMAScript标准中都有明确定义,只是需要结合场景理解。
内容的提问来源于stack exchange,提问作者IPKISS
相关产品推荐
相关产品推荐

