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