javascript - 为什么++ 在字符串上给出奇怪的结果

标签 javascript jquery operators

我正在使用 jQuery 动态附加元素,发现在使用 + + 时它显示 NaN 并且未添加下一个文本。

我可以猜测 + + 在这里作为算术加运算符以某种方式工作并返回 NaN

这不是增量运算符,因为两个 + 之间有空格。

我的问题是

  1. 这里实际发生了什么,所以它返回 NaN
  2. 为什么 + 在被字符串包围时不能用作连接运算符。

$('#message').html('<span>' + + ' new message</span>');
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="message"></div>

在 Node.js 中可以看到相同的行为

> 'a' + + 'b' // aNaN

注意:我知道我已经在此处添加了一个额外的 + 并且删除它对我有用。

最佳答案

原因是因为通过将 + 字符放在字符串之前,您试图将 'b' 字符串转换为数字,这导致 。您问题中的代码等同于:

'a' + Number('b')

因此 Number('b') 返回 NaN,然后将其强制转换为字符串并附加到 a。这种行为是 JS 固有的,因此所使用的库(无论是 jQuery、节点还是任何其他库)都是无关紧要的。

关于javascript - 为什么++ 在字符串上给出奇怪的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32945493/

相关文章:

javascript - 游标类型 : move ONLY when drag

ruby - => 运算符有什么作用?

javascript - jQuery 获取类名列表并添加到隐藏表单

javascript - JavaScript/CSS 应该放在 HTML 页面的底部吗?

javascript - 创建星号分隔字符串的 JavaScript 对象

javascript - 如果我移动鼠标,绝对 Div 会一直闪烁

c++ - 有一个新的转换运算符而不修改源

java - 处理包含数学操作数的 Java 字符串

javascript - 使用 setTimeout() 在 for 循环中“让”

javascript - 引用错误 : array is not defined