Javascript +运算符vs - 运算符

时间:2012-09-29 07:05:24

标签: javascript

我对此snippet

感到困惑
var n1 = 5-"4";
var n2 = 5+"4";

alert(n1);
alert(n2);

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

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

6 个答案:

答案 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);