混淆字符串连接的JavaScript语句
我正在开发一个node.js站点,我犯了一个复制粘贴错误,导致了下面一行(针对这个问题进行了简化): 它不会崩溃,x=NaN。现在我已经修复了这个bug,我很好奇这里发生了什么,因为如果我删除+符号之间的空格,我会得到一个错误(SyntaxError:invalid increment operand) 我的问题是:有人能向我解释一下语句中发生了什么,以及没有任何东西(两个+符号之间的空格)是如何将错误变为NaN的吗?混淆字符串连接的JavaScript语句,javascript,node.js,Javascript,Node.js,我正在开发一个node.js站点,我犯了一个复制粘贴错误,导致了下面一行(针对这个问题进行了简化): 它不会崩溃,x=NaN。现在我已经修复了这个bug,我很好奇这里发生了什么,因为如果我删除+符号之间的空格,我会得到一个错误(SyntaxError:invalid increment operand) 我的问题是:有人能向我解释一下语句中发生了什么,以及没有任何东西(两个+符号之间的空格)是如何将错误变为NaN的吗? 另外,我不确定这是否应该放在这里或programers.stackoverf
另外,我不确定这是否应该放在这里或programers.stackoverflow.com。如果我在错误的网站上发布,请告诉我 它的解释如下:
var x = "hi" + (+"mom")
前缀
+
试图将字符串强制为数字Number('mom')
是NaN
,所以在Firefox中+'mom'
也是NaN
,这会导致“hiNaN”
,这是合理的。我的完全猜测是空格被解释为0或其他什么把它擦掉。这是“嗨”(+“妈妈”)的结果,我想(+“妈妈”)被解读为积极的“妈妈”,因此NaN。@Sirko感谢您的快速回复。它以南(或“日南”)的形式回归的事实是合理的。我只是好奇它是如何到达南而不是崩溃的。javascript quark在做什么?@AlexeyLebedev感谢您的回答,但请您再解释一下您的评论好吗?在a++b
中,您有加法运算符和一元+
运算符。更多信息:好的,这是有道理的。谢谢你的解释!“parseFloat('mom')是NaN,所以+'mom'也是NaN。”相反,“Number('mom')是NaN,所以+'mom'也是NaN。”因为parseFloat('5foo')
是5
,但是+'5foo'
仍然是NaN
。
var x = "hi" + (+"mom")