阮一峰的JavaScript 教程读书笔记之运算符

运算符

算术运算符

加法运算符

JS允许非数值相加,例如布尔值相加,在运算过程中会把布尔值转换为数值。

true + true // 2
1 + true // 2

如果是两个字符串相加,会把他们拼成新的字符串;如果是一个字符串和非字符串相加,会把非字符串转成字符串。

'a' + 'bc' // "abc"
1 + 'a' // "1a"
false + 'a' // "falsea"

加法运算符是在运行时决定,到底是执行相加,还是执行连接。也就是说,运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)

'3' + 4 + 5 // "345"
3 + 4 + '5' // "75"

只有加法运算符存在重载,其他运算符(减法、乘法、除法)都不存在,他们会把字符串自动转为数值,然后再运算。

如果运算符的左右有对象,就会首先调用对象的valueOf方法,然后再调用对象的toString方法。

var obj = {
    p: 1 };
obj + 2 // "[object Object]2"
var obj = {
    p: 1 };
obj.valueOf() // { p: 1 }
obj.valueOf().toString() // "[object Object]"

因此可以通过重写valueOf方法或toString方法,来获得我们想要的结果。

var obj = {
   
  valueOf: function () {
   
    return 1;
  }
};

obj + 2 // 3

其他运算符

指数运算符:


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值