JavaScript中的加号运算符趣事

摘要:加号运算符(+)在JavaScript中无处不再,但是就是因为它太常用以至于我们忽略了它。这里的+号被解释成了连接符号。我们只需要这样即可:c = a + b*1,这样就解释成了运算符加号

加号运算符(+)在JavaScript中无处不再,但是就是因为它太常用以至于我们忽略了它。

加号运算符的两种含义

  • 用在数字上,就是相加
  • 用在字符串上,就是连接

这个应该很简单,我们来试试

数字相加

var a = 3;
var b = 6;
var c = a + b; //=> 9

字符串相加

var a = 3;
var b = '6';
var c = a + b; //=> '36'

这个结果理所应当,但是不是我们想要的。
这里的+号被解释成了连接符号。我们只需要这样即可:c = a + b*1,这样就解释成了运算符加号


连接与运算的优先级

这个问题不可避免,在我们开发中经常遇到。
先来看看下面这个例子:

var money1 = 2000;
var money2 = 3000;
var total = '2个月一共存了' + money1 + money2 + '元' ; 

我想这个结果应该可以预料到: 2个月一共存了20003000元
要是现实中真是这样运算,我们岂不是发了。
出现这种情况的原因是:

  • '2个月一共存了' 遇到 money1 时,处理成了'2个月一共存了2000'
  • '2个月一共存了2000' 遇到 money2时,处理成了 '2个月一共存了20003000'
  • ...

结论是:连接比相加优先级高

我们这个问题解决起来也很简单: var total = '2个月一共存了' + (money1 + money2) + '元' ; 通过括弧改变运算优先级。


本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://shenqiku.cn/article/FLY_11187