Javascript 为什么++;在字符串上给出了奇怪的结果
我正在使用jQuery动态添加元素,发现当使用Javascript 为什么++;在字符串上给出了奇怪的结果,javascript,jquery,operators,Javascript,Jquery,Operators,我正在使用jQuery动态添加元素,发现当使用++时,它会显示NaN,并且不会添加下一个文本 我可以猜到,++在这里作为算术加运算符工作,并返回NaN 这不是增量运算符,因为两个+之间有空格 我的问题是 这里实际发生了什么,所以它返回NaN 为什么这里的+被字符串包围时不能用作串联运算符 $('#message').html('++'新消息') 因为第二个+被评估为类似运算符的 '<span>' + + ' new message</span>' = '<span
++
时,它会显示NaN
,并且不会添加下一个文本
我可以猜到,++
在这里作为算术加运算符工作,并返回NaN
这不是增量运算符,因为两个+
之间有空格
我的问题是
NaN
+
被字符串包围时不能用作串联运算符$('#message').html('++'新消息')代码>
因为第二个+
被评估为类似运算符的
'<span>' + + ' new message</span>'
= '<span>' + (+' new message</span>')
= '<span>' + NaN
= <span>NaN
“”++“新消息”
=''+(++“新消息”)
=''+NaN
=楠
原因是,将+
字符放在字符串之前,试图将'b'
字符串转换为数字,这会导致NaN
。您问题中的代码相当于:
'a' + Number('b')
因此Number('b')
返回NaN
,然后将其强制为字符串并附加到a
。这种行为是JS固有的,因此所使用的库(无论是jQuery、node还是任何其他库)都是无关的。可以使用+
操作符将变量转换为数字。所以这个
"a" + + "b"
返回aNaN
,但此
"a" + + "5"
返回a5
由于b
不是数字,+b
返回NaN。您可以这样尝试:
$('#message').html('<span>' + ' new message</span>');
$('#消息').html('+'新消息');
或
$('#message').html('<span>' + '' + ' new message</span>');
$('#消息').html(''+'+'新消息');
==========================================
$('#消息').html('+'新消息')代码>
javascript首先尝试将字符串'b'
转换为数字,并返回NaN
,因为'b'
无法转换为数字。然后'a'+'NaN'
连接到新字符串'aNaN'
。在您的示例中也是如此:
$('#message').html('<span>' + + ' new message</span>');
$('#message').html('++'新消息');
Javascript尝试将+'newmessage'
转换为数字并返回NaN
。然后'+'NaN'
创建一个新的span
元素,并将NaN
作为文本
看一看:
一元加号运算符位于其操作数之前,并计算为其
但尝试将其转换为数字(如果不是)
已经。虽然一元否定(-)也可以转换非数字,
一元加号是转换某物的最快和首选方式
转换为一个数字,因为它不会对
号码。它可以转换整数和浮点数的字符串表示形式,
以及非字符串值true、false和null。整数
支持十进制和十六进制(“0x”-前缀)格式。
支持负数(但不支持十六进制)。如果不能
解析一个特定的值,它将计算为NaN
'a'++'b'类似于'a'+NaN++'b'@Omidam81,这是不正确的-参见答案可能重复的@TylerH参见在结束前提问的日期dupe@Tushar问答质量和活动比询问现有问题的日期更重要。与先前删除的答案一样,这忽略了问题的重点问题谢谢,这很有道理现在没问题很乐意帮忙。