为什么字符串上的 + + 会产生奇怪的结果
Why + + on strings gives strange result
我正在使用jQuery动态附加元素,发现使用+ +
时它会显示NaN
并且没有添加下一个文本。
我可以猜到+ +
以某种方式在这里作为算术加运算符工作并返回NaN
.
这不是增量运算符,因为两个+
之间有空格。
我的问题是
- 这里实际发生了什么,所以它返回
NaN
- 为什么
+
在这里当它被字符串包围时不能用作连接运算符。
$('#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'
字符串转换为数字,从而导致NaN
.您问题中的代码等效于以下内容:
'a' + Number('b')
因此,Number('b')
返回NaN
然后强制到字符串并附加到a
。这种行为是JS固有的,所以正在使用的库(无论是jQuery,node还是任何其他库(都是无关紧要的。
因为第二个+
被计算为一元加运算符,例如
'<span>' + + ' new message</span>'
= '<span>' + (+' new message</span>')
= '<span>' + NaN
= <span>NaN
javascript 首先尝试将字符串'b'
转换为数字并返回 NaN
'b'
因为无法转换为数字。然后'a' + 'NaN'
连接到新的字符串'aNaN'
。在您的示例中相同:
$('#message').html('<span>' + + ' new message</span>');
Javascript 尝试将+ ' new message</span>'
转换为数字并返回NaN
。然后'<span>' + 'NaN'
创建一个新的span
元素并NaN
为文本。
看一看:
一元加号 (+(
一元加运算符在其操作数之前,并计算其 操作数,但尝试将其转换为数字(如果不是( 已经。虽然一元否定(-(也可以转换非数字, 一元加是转换内容的最快和首选方式 成一个数字,因为它不对 数。它可以转换整数和浮点数的字符串表示, 以及非字符串值 true、false 和 null。中的整数 支持十进制和十六进制(以"0x"为前缀(格式。 支持负数(但不适用于十六进制(。如果不能 解析一个特定的值,它将计算为 NaN。
+
运算符可用于将变量转换为数字。 所以这个...
"a" + + "b"
返回aNaN
,但这...
"a" + + "5"
返回a5
由于b
不是数字,因此+ b
返回 NaN。
你可以这样尝试:
$('#message').html('<span>' + ' new message</span>');
或
$('#message').html('<span>' + '' + ' new message</span>');
====
============================================
$('#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>
- Regex模式匹配,从Javascript中的字符串中提取时间,结果出乎意料
- 将敲除绑定应用于模板,并将结果作为字符串获取
- 将Javascript Regex结果转换为字符串(?)
- Geoplugin字符串结果为德语单词/语言
- Javascript:拆分字符串,但仅使用 1 个结果
- 解析JSON字符串返回未定义的结果
- 在谷歌地图API自动完成中显示不匹配字符串的结果
- 将字符串结果返回到表单元格中的新行中
- mongodb-mongoose-find-如何获得适用的字符串作为结果
- 自定义查询字符串分析器返回不正确的结果
- 如何从数据库中获取JSON字符串结果以供以后使用
- 使用$se.trustAsHtml呈现字符串返回未定义的结果
- 调用.ajax方法得到未定义的json结果,返回json格式列表<字符串>
- 如何获取控制台.log输出 getter 结果而不是字符串“[Getter/Setter]”
- getElementById 给出结果和字符串
- 在 JavaScript 中解析日期字符串的意外结果
- Javascript PHP 字符串未返回所需的结果
- 正则表达式 - 替换方法从字符串中删除运算符产生不希望的结果
- 如何在javascript代码中获取console.log的结果字符串
- 将$get结果字符串转换为javascript数组