加法运算符
可以处理算术的加法,也可以用作字符串连接,它们都写成+。加法运算符以外的其他算术运算符(比如减法、除法和乘法),都不会发生重载。它们的规则是:所有运算子一律转为数值,再进行相应的数学运算。
- 如果运算子是对象,先自动转成原始类型的值(即先执行该对象的valueOf方法,如果结果还不是原始类型的值,再执行toString方法;如果对象是Date实例,则先执行toString方法)。
- 两个运算子都是原始类型的值以后,只要有一个运算子是字符串,则两个运算子都转为字符串,执行字符串连接运算。
- 否则,两个运算子都转为数值,执行加法运算。
//下面的写法,可以用来将一个值转为字符串。
x + ''
//加法运算符会将其他类型的值,自动转为字符串,然后再执行连接运算。
[1, 2] + [3]
// "1,23"
// 等同于
String([1, 2]) + String([3])
// '1,2' + '3'
//数值运算符的作用在于可以将任何值转为数值
+true // 1
+[] // 0
+{} // NaN
余数运算符
//运算结果的正负号由第一个运算子的正负号决定。为了得到正确的负数的余数值,需要先使用绝对值函数
-1 % 2 // -1
1 % -2 // 1
比较运算符
比较运算符可以比较各种类型的值,不仅仅是数值。除了相等运算符号和精确相等运算符,其他比较运算符的算法如下。
- 如果两个运算子都是字符串,则按照字典顺序比较(实际上是比较Unicode码点)。
- 否则,将两个运算子都转成数值,再进行比较(等同于先调用Number函数)。
//运算结果的正负号由第一个运算子的正负号决定。为了得到正确的负数的余数值,需要先使用绝对值函数
5 > '4' // true
// 等同于 5 > Number('4')
// 即 5 > 4
true > false // true
// 等同于 Number(true) > Number(false)
// 即 1 > 0
2 > true // true
// 等同于 2 > Number(true)
// 即 2 > 1
网友评论