var a=1;var b="2";c = a + b;alert(c); c输出12 为什么

var a=1;
var b="2";
c = a + b;alert(c);
c输出12 为什么?

c=a+b会将a和b当字符串进行级联操作,所以是12

JavaScript 的加法和级联(concatenation)都使用 + 运算符。

数字用加法。字符串用级联。

如果您对两个数相加,结果将是一个数:

实例
var x = 10;var y = 20;var z = x + y;           // z 将是 30(一个数)
如果对两个字符串相加,结果将是一个字符串的级联:

实例
var x = "10";var y = "20";var z = x + y;           // z 将是 1020(字符串)
如果您对一个数和一个字符串相加,结果也是字符串级联:

实例
var x = 10;var y = "20";var z = x + y;           // z 将是 1020(一个字符串)
如果您对一个字符串和一个数字相加,结果也是字符串级联:

实例
var x = "10";var y = 20;var z = x + y;           // z 将是 1020(字符串)

因为b是字符串
js中数值与字符串相加是把数值先转成字符串再与另一个字符串拼接在一起, 不是数值加法运算
1 + "2" 数值1先转成字符串"1"
等同 "1" + "2" 结果是字符串 "12"

如有帮助,请点击我的回答下方的【采纳该答案】按钮帮忙采纳下,谢谢!

img

因为b被当成了字符串
c=a+b c是a和b连接到一起的结果也是字符串——12
输出显示时就是12了

希望对题主有所帮助!可以的话,帮忙点个采纳!

因为 做运算时候 但凡有字符串参与的加法运算 会把两边的数据 隐式转换为字符串 所以 他就拼接起来了

减法的话 就不一样了 会隐式转换成数字运算

前几天 刚回答了 一个相同的问题 这个答案简单明了

因为b是字符串,数字类型跟字符串相加,结果是拼接起来

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632