加法運(yùn)算符
可以處理算術(shù)的加法拷泽,也可以用作字符串連接庆揩,它們都寫成+。加法運(yùn)算符以外的其他算術(shù)運(yùn)算符(比如減法跌穗、除法和乘法),都不會(huì)發(fā)生重載虏辫。它們的規(guī)則是:所有運(yùn)算子一律轉(zhuǎn)為數(shù)值蚌吸,再進(jìn)行相應(yīng)的數(shù)學(xué)運(yùn)算。
- 如果運(yùn)算子是對象砌庄,先自動(dòng)轉(zhuǎn)成原始類型的值(即先執(zhí)行該對象的valueOf方法羹唠,如果結(jié)果還不是原始類型的值,再執(zhí)行toString方法娄昆;如果對象是Date實(shí)例佩微,則先執(zhí)行toString方法)。
- 兩個(gè)運(yùn)算子都是原始類型的值以后萌焰,只要有一個(gè)運(yùn)算子是字符串哺眯,則兩個(gè)運(yùn)算子都轉(zhuǎn)為字符串,執(zhí)行字符串連接運(yùn)算扒俯。
- 否則奶卓,兩個(gè)運(yùn)算子都轉(zhuǎn)為數(shù)值,執(zhí)行加法運(yùn)算撼玄。
//下面的寫法夺姑,可以用來將一個(gè)值轉(zhuǎn)為字符串。
x + ''
//加法運(yùn)算符會(huì)將其他類型的值掌猛,自動(dòng)轉(zhuǎn)為字符串盏浙,然后再執(zhí)行連接運(yùn)算。
[1, 2] + [3]
// "1,23"
// 等同于
String([1, 2]) + String([3])
// '1,2' + '3'
//數(shù)值運(yùn)算符的作用在于可以將任何值轉(zhuǎn)為數(shù)值
+true // 1
+[] // 0
+{} // NaN
余數(shù)運(yùn)算符
//運(yùn)算結(jié)果的正負(fù)號由第一個(gè)運(yùn)算子的正負(fù)號決定。為了得到正確的負(fù)數(shù)的余數(shù)值废膘,需要先使用絕對值函數(shù)
-1 % 2 // -1
1 % -2 // 1
比較運(yùn)算符
比較運(yùn)算符可以比較各種類型的值竹海,不僅僅是數(shù)值。除了相等運(yùn)算符號和精確相等運(yùn)算符殖卑,其他比較運(yùn)算符的算法如下站削。
- 如果兩個(gè)運(yùn)算子都是字符串,則按照字典順序比較(實(shí)際上是比較Unicode碼點(diǎn))孵稽。
- 否則许起,將兩個(gè)運(yùn)算子都轉(zhuǎn)成數(shù)值,再進(jìn)行比較(等同于先調(diào)用Number函數(shù))菩鲜。
//運(yùn)算結(jié)果的正負(fù)號由第一個(gè)運(yùn)算子的正負(fù)號決定园细。為了得到正確的負(fù)數(shù)的余數(shù)值,需要先使用絕對值函數(shù)
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