[補(bǔ)檔]bilibili播放器特殊彈幕語(yǔ)言-ECMAScript 一元運(yùn)算符
標(biāo)題:ECMAScript 一元運(yùn)算符
轉(zhuǎn)自:docs.bilibili.tv

一元運(yùn)算符只有一個(gè)參數(shù),即要操作的對(duì)象或值。它們是ECMAScript 中最簡(jiǎn)單的運(yùn)算符。

前增量/前減量運(yùn)算符
直接從C(和Java)借用的兩個(gè)運(yùn)算符是前增量運(yùn)算符和前減量運(yùn)算符。
所謂前增量運(yùn)算符,就是數(shù)值上加1,形式是在變量前放兩個(gè)加號(hào)(++):
第二行代碼把iNum 增加到了11,它實(shí)質(zhì)上等價(jià)于:
同樣,前減量運(yùn)算符是從數(shù)值上減1,形式是在變量前放兩個(gè)減號(hào)(--):
在這個(gè)例子中,第二行代碼把iNum 的值減到9。
在使用前綴式運(yùn)算符時(shí),注意增量和減量運(yùn)算符都發(fā)生在計(jì)算表達(dá)式之前??紤]下面的例子:
第二行代碼對(duì)iNum 進(jìn)行減量運(yùn)算,第三行代碼顯示的結(jié)果是("9")。第四行代碼又對(duì)iNum 進(jìn)行減量運(yùn)算,不過(guò)這次前減量運(yùn)算和輸出操作出現(xiàn)在同一個(gè)語(yǔ)句中,顯示的結(jié)果是"8"。為了證明已實(shí)現(xiàn)了所有的減量操作,第五行代碼又輸出一次"8"。
在算術(shù)表達(dá)式中,前增量和前減量運(yùn)算符的優(yōu)先級(jí)是相同的,因此要按照從左到右的順序計(jì)算之。例如:
在前面的代碼中,iNum3 等于22,因?yàn)楸磉_(dá)式要計(jì)算的是1 + 21。變量iNum4 也等于22,也是1 + 21。

后增量/后減量運(yùn)算符
還有兩個(gè)直接從C(和Java)借用的運(yùn)算符,即后增量運(yùn)算符和后減量運(yùn)算符。
后增量運(yùn)算符也是給數(shù)值上加1,形式是在變量后放兩個(gè)加號(hào)(++):
不出所料,后減量運(yùn)算符也是從數(shù)值上減1,形式為在變量后加兩個(gè)減號(hào)(--):
第二行代碼把iNum 的值減到9。 與前綴式運(yùn)算符不同的是,后綴式運(yùn)算符是在計(jì)算過(guò)包含它們的表達(dá)式后才進(jìn)行增量或減量運(yùn)算的??紤]以下的例子:
與前綴式運(yùn)算符的例子相似,第二行代碼對(duì)iNum 進(jìn)行減量運(yùn)算,第三行代碼顯示結(jié)果("9")。第四行代碼繼續(xù)顯示iNum 的值,不過(guò)這次是在同一語(yǔ)句中應(yīng)用減量運(yùn)算符。由于減量運(yùn)算發(fā)生在計(jì)算過(guò)表達(dá)式之后,所以這條語(yǔ)句顯示的數(shù)是"9"。執(zhí)行了第五行代碼后,alert 函數(shù)顯示的是"8",因?yàn)樵趫?zhí)行第四行代碼之后和執(zhí)行第五行代碼之前,執(zhí)行了后減量運(yùn)算。
在算術(shù)表達(dá)式中,后增量和后減量運(yùn)算符的優(yōu)先級(jí)是相同的,因此要按照從左到右的順序計(jì)算之。例如:
在前面的代碼中,iNum3 等于22,因?yàn)楸磉_(dá)式要計(jì)算的是2 + 20。變量iNum4 也等于22,不過(guò)它計(jì)算的是1 + 21,因?yàn)樵隽亢蜏p量運(yùn)算都在給iNum3 賦值后才發(fā)生。

一元加法和一元減法
大多數(shù)人都熟悉一元加法和一元減法,它們?cè)贓CMAScript 中的用法與您高中數(shù)學(xué)中學(xué)到的用法相同。
一元加法本質(zhì)上對(duì)數(shù)字無(wú)任何影響:
這段代碼對(duì)數(shù)字20 應(yīng)用了一元加法,返回的還是20。
盡管一元加法對(duì)數(shù)字無(wú)作用,但對(duì)字符串卻有有趣的效果,會(huì)把字符串轉(zhuǎn)換成數(shù)字。
這段代碼把字符串"20" 轉(zhuǎn)換成真正的數(shù)字。當(dāng)一元加法運(yùn)算符對(duì)字符串進(jìn)行操作時(shí),它計(jì)算字符串的方式與parseInt() 相似,主要的不同是只有對(duì)以"0x" 開頭的字符串(表示十六進(jìn)制數(shù)字),一元運(yùn)算符才能把它轉(zhuǎn)換成十進(jìn)制的值。因此,用一元加法轉(zhuǎn)換"010",得到的總是10,而"0xB" 將被轉(zhuǎn)換成11。
另一方面,一元減法就是對(duì)數(shù)值求負(fù)(例如把20 轉(zhuǎn)換成-20):
與一元加法運(yùn)算符相似,一元減法運(yùn)算符也會(huì)把字符串轉(zhuǎn)換成近似的數(shù)字,此外還會(huì)對(duì)該值求負(fù)。例如:
在上面的代碼中,一元減法運(yùn)算符將把字符串"-20" 轉(zhuǎn)換成-20(一元減法運(yùn)算符對(duì)十六進(jìn)制和十進(jìn)制的處理方式與一元加法運(yùn)算符相似,只是它還會(huì)對(duì)該值求負(fù))。

完