1

我对这个片段感到困惑:

var n1 = 5-"4";
var n2 = 5+"4";

alert(n1);
alert(n2);

​我知道n1是1。那是因为减号运算符会将字符串“4”转换为数字并将其从5中减去。但是为什么在+运算符的情况下我们会得到54呢?

有人可以向我解释 + 和 = 运算符之间的区别吗?

4

6 回答 6

3

通过类型转换+,任何包含字符串的表达式都将产生一个字符串。因此5,在执行连接之前,所有操作数(在您的情况下)都将转换为字符串。

-另一方面,它只是一个算术操作数,因此"4"被转换为整数,并且按照您的预期执行计算。

于 2012-09-29T07:08:24.893 回答
2

这是因为 in n2,+被视为连接,而不是加法。所以5转换为字符串"5""4"连接起来,给出“54”。

于 2012-09-29T07:07:44.510 回答
2

当 的任一侧有字符串时++将被视为字符串连接运算符,另一侧将转换为字符串然后进行连接。

并且要小心类似的东西1+2+'3',结果是'33'而不是'123'

于 2012-09-29T07:09:08.287 回答
1

-运算符只有一个含义 - 数字减法(或否定,在这种情况下,也转换为数字)。但是,在运算符的情况下+,有两种:数字加法字符串连接。当 operator 的操作数之一+是字符串时,它会进行字符串连接而不是数字加法。

整个过程比这要复杂一些,并且涉及一种算法,例如,您可以在此处了解更多信息。

于 2012-09-29T07:07:32.333 回答
1

+运算符也是一个字符串运算符。javascript 中的每个基本类型变量也可以用它的字符串表示来解释。您只是将 5 附加到 4 得到 54。

-运算符不是字符串运算符,因此编译器尝试将“4”解释为数字,从而得到 1

于 2012-09-29T07:08:33.107 回答
1

Javascript 将 5 作为数字,将“4”作为字符串。javascript + 运算符用于连接两件事。如果要添加,请使用 parseInt。

var n1 = 5-"4";
var n2 = parseInt(5)+parseInt("4");

alert(n1);
alert(n2);
于 2012-09-29T07:10:09.540 回答