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

diE*_*cho 27 javascript operator-overloading

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

'7'+ 4给出'74',而'7' - 4给出了JavaScript

为什么会这样?

cle*_*tus 30

+是串连接操作,所以当你做'7' + 4你强迫4转换为字符串并将其附加.-操作员没有这种模棱两可的态度.

如果您想明确使用parseInt()parseFloat():

parseInt('7', 10) + 4
Run Code Online (Sandbox Code Playgroud)

为什么将基数指定为10?因此'077'不会被解析为八进制.

  • 以防万一:使用parseInt('7',10)和base参数,这样'077'就不会被误认为是一个八进制整数. (3认同)

And*_*ndy 24

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


Del*_*ani 16

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

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

-运营商,然而,这只是对数字,因此操作数总是在操作过程中被转换为数字.