常规运算符都没啥变化,这里有10个算术运算符:
- 加法运算符:
x + y
- 减法运算符:
x - y
- 乘法运算符:
x * y
- 除法运算符:
x / y
- 指数运算符:
x ** y
- 余数运算符:
x % y
- 自增运算符:
++x
或者x++
- 自减运算符:
--x
或者x--
- 数值运算符:
+x
- 负数值运算符:
-x
下面也主要是记录一些非常规的用法,譬如加法可以表示字符串的连接,这个操作在oc中就没有。
加法运算符
-
js允许非数值相加:
true + true // 2
、1 + true // 2
-
如果是两个字符串相加,则表示连接符:
'a' + 'bc' // "abc"
-
只有有一个是字符串,都是表示链接:
1 + 'a' // "1a"
、false + 'a' // "falsea"
-
加法运算符是在运行时决定,到底是执行相加,还是执行连接。运算子的不同,导致了不同的语法行为,这种现象称为“重载”(overload)
-
除了加法运算符,其他算术运算符(比如减法、除法和乘法)都不会发生重载。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算。
-
对象的加法
:必须先转成原始类型的值,然后再相加。例如:var obj = { p: 1 };
的加法- 首先,自动调用对象的
valueOf
方法。obj.valueOf() // { p: 1 }
- 然后,再自动调用对象的
toString
方法,将其转为字符串。obj.valueOf().toString() // "[object Object]"
- 最后,变成字符串的加法。
obj + 2
<==>"[object Object]" + 2
- 当然,也是可以
重载
上面的两个方法,使他们返回指定的值,来完成
- 首先,自动调用对象的
其他的几种运算符就没什么特别之处,都是常规语法。例如:余数运算符、自增和自减运算符、数值和负数运算符、指数运算符、位运算符等。
网友评论