我对此snippet:
感到困惑var n1 = 5-"4";
var n2 = 5+"4";
alert(n1);
alert(n2);
我知道n1是1.这是因为减号运算符会将字符串“4”转换为数字并从5减去它。 但是为什么我们在+运算符的情况下得到54?
有人可以向我解释+和=运算符之间的区别吗?
答案 0 :(得分:3)
通过类型转换,包含字符串的任何+
表达式都将生成一个字符串。因此,在执行连接之前,所有操作数(在您的情况下为5
)都将转换为字符串。
-
只是一个算术操作数,因此将"4"
转换为整数,并按预期执行计算。
答案 1 :(得分:2)
这是因为在n2
中,+
被视为连接,而不是添加。因此,5
转换为字符串"5"
,"4"
连接在一起,给出“54”。
答案 2 :(得分:2)
当+
的任一侧有一个字符串时,+
将被视为字符串连接运算符,另一端将被转换为字符串,然后进行连接。
请注意1+2+'3'
之类的内容,结果为'33'
而不是'123'
。
答案 3 :(得分:1)
-
运算符只有一个含义 - 数字减法(或否定,在这种情况下,也转换为数字)。但是,对于+
运算符,有两个:数字加法和字符串连接。当+
运算符的一个操作数是一个字符串时,它会进行字符串连接而不是数字添加。
整个过程比这更复杂,并且涉及一种算法,你可以学习更多here,例如。
答案 4 :(得分:1)
+
运算符也是字符串运算符。 javascript中的所有基本类型变量也可以在其字符串表示中进行解释。你只需要附加5到4来获得54。
-
运算符不是字符串运算符,因此编译器会尝试将“4”解释为数字,从而得到1
答案 5 :(得分:1)
Javascript将5作为数字,将“4”作为字符串。 javascript +运算符用于连接两件事。 如果你想加入,请使用parseInt。
var n1 = 5-"4";
var n2 = parseInt(5)+parseInt("4");
alert(n1);
alert(n2);