任何使用NaN的算术运算都应该是NaN

Atu*_*mar 1 javascript nan

我有一个类似的声明

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)

代码片段

如果是IsNaN('b'),它试图检测参数是否为数字.'b'不是数字(NaN),所以它会返回true.

代码片段

欲了解更多见文档


T.J*_*der 5

因为它不是算术运算,所以它是字符串连接.无论何时无论操作数+是一个字符串,字符串连接是做,而不是加法; 规范中的详细信息.如果另一个操作数不是字符串,则它被赋予字符串.所以你最终得到"1" + "b"=> "1b".