JavaScript中的+操作符

JavaScript中的+操作符

二元+操作符可用于数值操作数的和或者拼接字符串操作数。

+操作符优先于字符串拼接:只要有操作数是字符串或者可以转换称字符串的对象。林一个操作数也会被转换为字符串并执行拼接操作。只要有任何操作数都不是字符串或字符串值时才会执行加法操作。

+操作符的行为如下:

  • 如果一个操作数是对象,则+操作符使用对象到原始值的算法把该对象转换成原始值。Date对象用toString()方法来转换,其他对象通过valueOf()转换(如果这个对象返回原始值)。不过,多数对象并没有valueOF()方法,因此它们也会通过toString()方法转换。
  • 完成对象到原始值的转换后,如果有操作数是字符串,另一个操作数也会被转换成字符串并进行拼接。
  • 否则,两个操作数都被转换成数值(或NaN),计算加法。

eg:

1+2
=>3               //加法
"1"+"2"
=>"12"            //拼接
"1"+2
=>"12"            //数值转换成字符串后再拼接
1+{}
=>"1[object Object]"       //对象转换为字符串后再拼接
true+true
=>2              //布尔值转换为字符串后计算加法
2+null
=>2              //null转换为0后计算加法
2+undefined
=>NaN            //undefined转换为NaN后计算加法

最后,很重要的一点是,+操作符在用于字符串和数值时,可能不遵守结合性。换句话说,结果取决于操作执行的顺序。

1+2+" blind mice"
=>"3 blind mice"
1+(2+" blind mice")
=>"12 blind mice"

第一行没有圆括号,+操作符表现出左结合性,即两个数值先相加,然后它们的和再与字符串拼接。第二行的圆括号改变了操作执行的顺序:数值2先于字符串拼接产生一个新字符串,然后数值1再与新字符串拼接得到最终结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值