混淆有关字符串连接的JavaScript语句

Dew*_*eph 3 javascript node.js

我正在开发一个node.js网站,我做了一个复制并粘贴错误导致了以下行(针对此问题进行了简化):

var x = "hi" + + "mom"
Run Code Online (Sandbox Code Playgroud)

它不会崩溃,x = NaN.现在我已经修复了这个bug,我很好奇这里发生了什么,因为如果我删除+符号之间的空格我得到一个错误(SyntaxError:无效的增量操作数)

我的问题是:有些人可以向我解释声明中发生了什么,以及没有任何内容(+符号之间的空格)将其从错误更改为NaN?

PS.我不确定这应该在这里或programers.stackoverflow.com.如果我在错误的网站上发布,请告诉我.

Mat*_*ics 7

它的解释如下:

var x = "hi" + (+"mom")
Run Code Online (Sandbox Code Playgroud)

前缀+尝试将字符串强制转换为数字.Number('mom')是NaN,所以+'mom'也是NaN.

  • *"parseFloat('mom')是NaN,所以+'妈妈'也是NaN."*相反*"数字('妈妈')是NaN,所以+'妈妈'也是NaN."*因为`parseFloat(' 5foo')`是'5`,但是'+'5foo'`仍然是'NaN`. (4认同)