添加和减去数字作为字符串

时间:2010-06-07 08:11:48

标签: javascript operator-overloading

我在关于SO的问题上阅读了以下内容:

  

'7'+ 4给出'74',而'7' - 4在JavaScript中给出3

为什么会这样?

5 个答案:

答案 0 :(得分:30)

+是字符串连接运算符,因此当您执行'7' + 4时,您将4强制转换为字符串并附加它。 -运算符没有这种歧义。

如果您想明确无误,请使用parseInt()parseFloat()

parseInt('7', 10) + 4

为什么将基数指定为10?所以'077'不会被解析为八进制。

答案 1 :(得分:24)

为字符串和数字定义'+'运算符,因此当您将其应用于字符串和数字时,数字将被转换为字符串,然后字符串将被连接: '7'+ 4 => '7'+'4'=> '74' 但' - '仅针对数字而非字符串定义,因此字符串'7'将转换为数字: '7' - 4 => 7 - 4 => 3

答案 2 :(得分:16)

+运算符在JavaScript中被重载以执行连接和添加。 JavaScript确定要执行哪个操作的方式基于操作数。如果其中一个操作数不是类Number(或number基本类型),则两者都将被转换为字符串以进行连接。

3 + 3 = 6
3 + '3' = 33
'3' + 3 = 33
(new Object) + 3 = '[object Object]3'

然而,-运算符仅用于数字,因此操作期间操作数将始终转换为数字。

答案 3 :(得分:2)

因为+是浓度,如果你想要添加两个数字,你应该首先解析它们parseInt()和 - 符号用于减法

答案 4 :(得分:2)

Javascript中的符号+首先被解释为连接,然后是加法,因为第一部分是字符串('7')。因此,解释器将第二部分(4)转换为字符串并将其连接起来。

对于'7' - 4,除了减法之外没有其他意义,因此减法就完成了。