我被这个snippet弄糊涂了
var n1 = 5-"4";
var n2 = 5+"4";
alert(n1);
alert(n2);我知道n1是1。这是因为运算符将字符串"4“转换为数字,然后从5中减去它。但是为什么+运算符得到54?
有人能给我解释一下+和=运算符之间的区别吗?
发布于 2012-09-29 15:08:25
通过类型转换,任何包含字符串的+表达式都将生成字符串。因此,在执行连接之前,所有操作数(在本例中为5)都将被转换为字符串。
另一方面,-只是一个算术操作数,因此"4"被转换为整数,并且计算如您所期望的那样执行。
发布于 2012-09-29 15:07:45
这是因为在n2中,+被视为连接,而不是加法。因此,5被转换为字符串"5",而"4"被连接起来,得到"54“。
发布于 2012-09-29 15:09:08
当+的任一侧有字符串时,+将被视为字符串连接运算符,另一侧将被转换为字符串,然后进行连接。
要小心像1+2+'3'这样的东西,结果是'33'而不是'123'。
https://stackoverflow.com/questions/12650700
复制相似问题