为什么在JavaScript中 "5"-5=0而 "5"+5="55"?

102 阅读2分钟

算术"****+"运算符

二进制+运算符通常用于两个数字的相加,当两个操作数都是数字时,它将给出和(非常明显)。

但是当其中一个操作数是一个字符串时,"+"就会作为一个字符串连接运算符。

另一个操作数如果是数字,将被转换为字符串。

2+2=4
2+"2"="22"
"2"+2="22"
"2"+"2"="22"

算术"-"运算符

-运算符只对数字进行操作。

如果两个操作数都是数字,它将做随意减法。如果运算符是用字符串表示的数字,它将只是把这些转换成数字。

如果存在任何像 "hello "这样的字符串,它将只产生NaN。

2-5=-3
5-4=1
"500"-100=400
"50"-"19"=31
"adarsh"-9=NAN

"+"和"-"运算符的优先级

我们在高中时就知道BODMAS规则,这里的加法和减法有相同的优先权或优先级。

因此,它将从左到右评估。

"100"+200-"150"  //will start from this
"100"+"200"-"150"
"100200"-"2"
100200-2
100198 //will end like this

与其他许多高级语言不同,JavaScript是一种动态类型的语言,对操作数的数据类型并不严格。

当操作数是不同的类型时,它将把它们转换成合适的类型,而不是显示错误。

这些不能被称为JavaScript的怪异或特征。这些只是JavaScript的内部工作方式。

简单地说,+既是一个连接操作,也是一个加法操作。如果任何操作数/参数不是m=数字,它就会进行连接,这就是为什么 "2"+"2"==22,就像 "adarsh "+"gupta"=="adarsh gupta"。

- 是唯一的减法。不管它的参数是什么,它们都被胁迫为数字。因此,"22"-"2 "被评估为22-2,也就是20。

总结

我们已经了解了为什么+运算符在不同情况下既做连接又做加法。