Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么++;在字符串上给出了奇怪的结果_Javascript_Jquery_Operators - Fatal编程技术网

Javascript 为什么++;在字符串上给出了奇怪的结果

Javascript 为什么++;在字符串上给出了奇怪的结果,javascript,jquery,operators,Javascript,Jquery,Operators,我正在使用jQuery动态添加元素,发现当使用++时,它会显示NaN,并且不会添加下一个文本 我可以猜到,++在这里作为算术加运算符工作,并返回NaN 这不是增量运算符,因为两个+之间有空格 我的问题是 这里实际发生了什么,所以它返回NaN 为什么这里的+被字符串包围时不能用作串联运算符 $('#message').html('++'新消息') 因为第二个+被评估为类似运算符的 '<span>' + + ' new message</span>' = '<span

我正在使用jQuery动态添加元素,发现当使用
++
时,它会显示
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问答质量和活动比询问现有问题的日期更重要。与先前删除的答案一样,这忽略了问题的重点问题谢谢,这很有道理现在没问题很乐意帮忙。