我在关于SO的问题上阅读了以下内容:
'7'+ 4给出'74',而'7' - 4在JavaScript中给出3
为什么会这样?
答案 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
,除了减法之外没有其他意义,因此减法就完成了。