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

Javascript 使用NaN的任何算术运算都应该是NaN,javascript,nan,Javascript,Nan,我有一个类似的声明 var x = parseInt(1)+'b'; 为什么这个结果是1b,但isNAN'b'返回真值; 所以结果应该是NaN?数字+字符串不是算术运算 在Number+String语句中,引擎将数字转换为等效字符串 在您的情况下,它将是1->“1”。然后是简单的字符串连接,因为+运算符将连接两个字符串 '1' + 'b' === '1b'; 代码片段 console.log1+'b' 数字+字符串不是算术运算 在Number+String语句中,引擎将数字转换为等效字符串

我有一个类似的声明

var x = parseInt(1)+'b';
为什么这个结果是1b,但isNAN'b'返回真值; 所以结果应该是NaN?

数字+字符串不是算术运算

在Number+String语句中,引擎将数字转换为等效字符串

在您的情况下,它将是1->“1”。然后是简单的字符串连接,因为+运算符将连接两个字符串

'1' + 'b' === '1b';
代码片段

console.log1+'b' 数字+字符串不是算术运算

在Number+String语句中,引擎将数字转换为等效字符串

在您的情况下,它将是1->“1”。然后是简单的字符串连接,因为+运算符将连接两个字符串

'1' + 'b' === '1b';
代码片段

console.log1+'b' 如果任一操作数是字符串,则+运算符定义为串联

源:

如果任一操作数是字符串,则+运算符定义为串联


来源:

因为它不是算术运算,所以是字符串串联。无论何时+的任一操作数是字符串,都会执行字符串串联而不是加法。如果另一个操作数不是字符串,则转换为字符串。因此,结果是1+b=>1b。

因为它不是算术运算,而是字符串串联。无论何时+的任一操作数是字符串,都会执行字符串串联而不是加法。如果另一个操作数不是字符串,则转换为字符串。因此,最终的结果是1+b=>1b。

当+运算符的参数之一是字符串时,它将被解释为串联运算符,而不是加法运算符。非字符串值将转换为字符串,并附加到字符串值或在字符串值前面加上前缀,具体取决于它是否分别位于运算符的右侧或左侧。

当+运算符将字符串作为其参数之一时,它将被解释为串联运算符,而不是加法运算符。非字符串值将转换为字符串,并附加到字符串值或在其前面加上前缀,取决于它是否分别位于运算符的右侧或左侧。

您已经得到答案,但也检查了有关短答案的文档:因为它不是算术运算:您已经得到答案,但也检查了有关短答案的文档:因为它不是算术运算: