为什么 javascript console.log(1 + + " " + 3);句子 returns 4 而不是“1 3”?

Why javascript console.log(1 + + " " + 3); sentence returns 4 and not "1 3"?

当语句 console.log(1 + + " " + 3); 在 Chrome 控制台中执行时,结果是 4 而不是我期望的 "1 3"

谁能解释一下为什么会这样?

这种行为称为强制

在这种情况下 unary plus operator + converts to number the expression at the right. If it cannot parse a particular value, it will evaluate to NaN

+ " " //--> is coerced to 0

你可以在这个 Gist 中看到一些强制转换的例子: JavaScript Coercion

如果您只是将问题分解成多个组成部分并在控制台中输入 +" ",您会看到它的计算结果为 01+3+04.

对语句求值时会进行以下操作:

1 // one
+ // add
+ " " // implicitly convert " " to a number (0)
+ // add
3 // three

所以基本上 1 + 0 + 3。没有字符串进入此计算。预先转换为数字。

本例中的 + 运算符是 一元 +(参见“强制转换”)。