我有一个类似的声明
var x = parseInt(1)+'b';
Run Code Online (Sandbox Code Playgroud)
为什么这个结果是1b但是isNAN('b')返回真实; 结果应该是NaN?
Sur*_*yan 12
Number + String 不是算术运算.
在Number + String语句中,引擎会将数字转换为字符串等价物.
在你的情况下它将是1 -> '1'.然后将是简单的字符串连接,因为+运算符将连接两个字符串.
'1' + 'b' === '1b';
Run Code Online (Sandbox Code Playgroud)
代码片段
console.log(1 + 'b');Run Code Online (Sandbox Code Playgroud)
如果是IsNaN('b'),它试图检测参数是否为数字.'b'不是数字(NaN),所以它会返回true.
代码片段
console.log(isNaN('b'));Run Code Online (Sandbox Code Playgroud)
欲了解更多见文档