前置和后置的區(qū)別
在沒有賦值操作,前置和后置是一樣的。但在賦值操作時,如果遞增或遞減運(yùn)算符前置,那么前置的運(yùn)算符會先累加或累減再賦值,如果是后置運(yùn)算符則先賦值再累加或累減。
(2)加和減運(yùn)算符
用于取正或取負(fù)運(yùn)算,也有把數(shù)字字符串轉(zhuǎn)換為數(shù)值形式的功能。
二、算術(shù)運(yùn)算符
JavaScript語言中規(guī)定了五種算術(shù)運(yùn)算符,即+,-,*,/和%(取余)。如果在算術(shù)運(yùn)算符的值不是數(shù)值,那么它會先使用Number()轉(zhuǎn)型函數(shù)將其轉(zhuǎn)換為數(shù)值(隱式轉(zhuǎn)換)。
這是為什么呢?JavaScript語言中的做算術(shù)運(yùn)算時,只要其中一個是字符串,那么結(jié)果就會轉(zhuǎn)換為字符串。相當(dāng)于字符串連接符,不能再算作是加法算術(shù)運(yùn)算符。
取余
三、關(guān)系運(yùn)算符
用于進(jìn)行比較的運(yùn)算符稱作為關(guān)系運(yùn)算符:<(小于),>(大于),<=(小于等于),>=(大于等于),==(相對),!=(不等),===(恒等或全等),!==(不全等或不恒等)。關(guān)系運(yùn)算符大多數(shù)返回的是一個布爾值。
和其他運(yùn)算符一樣,當(dāng)關(guān)系運(yùn)算符操作非數(shù)值時要遵循以下規(guī)則:
1兩個操作符都是數(shù)值,則數(shù)值比較
2兩個操作數(shù)都是字符串,則比較兩個字符串對應(yīng)的字符編碼值
3兩個操作數(shù)有一個是數(shù)值,則將另一個轉(zhuǎn)換為數(shù)值,在進(jìn)行數(shù)值比較
4兩個操作數(shù)有一個是對象,則先調(diào)用value()方法或toString()方法,再用結(jié)果比較。
在相等和不等的比較上,如果操作數(shù)是非數(shù)值,則遵循以下規(guī)則:
1一個操作數(shù)是布爾值,則比較之前將其轉(zhuǎn)換為數(shù)值,false轉(zhuǎn)成0,true轉(zhuǎn)成1。
2一個操作數(shù)是字符串,則比較之前將其轉(zhuǎn)成為數(shù)值再比較。
3一個操作數(shù)是對象,則先調(diào)用value()方法或toString()方法再比較。
4不需要任何轉(zhuǎn)換的情況下,null和undefined是相等的
5一個操作數(shù)是NaN,則==返回false,!=返回true,并且NaN和自身不等
6兩個操作數(shù)都是對象,則比較它們是否是同一個對象,如果都指向同一個對象,則返回true,否則返回false
7在全等和全不等的判斷上,比如值和類型都相等,才返回true,否則返回fasle。
四邏輯運(yùn)算符
JavaScript語言中的邏輯運(yùn)算符通常作用于布爾值的操作,一般和關(guān)系運(yùn)算符配合使用,有三個邏輯運(yùn)算符:&&(邏輯與),||(邏輯或)和!(邏輯非)。
(1)&&表示兩邊都必須是true,才返回true。
如果兩邊的操作數(shù)有一個操作數(shù)不是布爾值的情況下,與運(yùn)算就不一定返回布爾值,此時遵循下面的規(guī)則:
1第一個操作數(shù)是對象,則返回第二個操作數(shù)
2第二操作數(shù)是對象,則第一個操作數(shù)返回true,才返回第二個操作數(shù),否則返回false
3一個操作數(shù)是null,則返回null
4一個操作數(shù)是undefined,則返回undefined
5如果一個運(yùn)算數(shù)是對象,另一個是 Boolean 值,返回該對象
邏輯與運(yùn)算符屬于短路操作,如果有第一個操作數(shù)返回的是false,第二個不管是true還是false都返回false。
(2)||表示兩邊有一個是true,就返回true。
如果兩邊的操作數(shù)有一個操作數(shù)不是布爾值的情況下,與運(yùn)算就不一定返回布爾值,此時遵循下面的規(guī)則:
1第一個操作數(shù)是對象,則返回第一個個操作數(shù)
2第一個操作數(shù)的求值結(jié)果為fasle,則返回第二個操作數(shù)
3兩個操作數(shù)都是對象,則返回第一個操作數(shù)
4兩個操作數(shù)都是null,則返回null
5兩個操作數(shù)都是undefined,則返回undefined
6兩個操作數(shù)都是NaN,則返回NaN
邏輯或運(yùn)算符也屬于短路操作,如果有第一個操作數(shù)返回的是true,第二個不管是true還是false都返回true。
var box1={}||(5>4); document.write(box1+"
");//
(3)!邏輯非運(yùn)算符可以作用與任何值,無論這個值是什么數(shù)據(jù)類型,這個運(yùn)算符都會返回一個布爾值,它的流程是:先將這個值轉(zhuǎn)換成布爾值,然后取反,規(guī)則如下:
1操作數(shù)是一個對象,返回false
2操作數(shù)是一個空字符串,返回true
3操作數(shù)是一個非空字符串,返回false
4操作數(shù)是數(shù)值0,返回true
5操作數(shù)是任意非0數(shù)值,返回false
6操作數(shù)是null,返回true
7操作數(shù)是NaN,返回true
8操作數(shù)是undefined,返回true
五、位運(yùn)算符
JavaScript語言中包括了七種位運(yùn)算符:~(位非),&(位與),|(位或),^(位異或),<<(左移),>>(有符右移號),>>>(無符號右移)
(1)位非(~)運(yùn)算把運(yùn)算數(shù)轉(zhuǎn)換成32位數(shù)字,然后把二進(jìn)制數(shù)轉(zhuǎn)換成它的二進(jìn)制反碼,最后把二進(jìn)制數(shù)轉(zhuǎn)換成浮點(diǎn)數(shù)。實(shí)質(zhì)上是對數(shù)字求負(fù),然后減去1即為所得值。
(2)位與(&)運(yùn)算直接對數(shù)字的二進(jìn)制形式進(jìn)行運(yùn)算,然后對上下同一位置的兩個數(shù)位進(jìn)行與運(yùn)算,只有兩個數(shù)位都為1時才得出1,其余的均為0.
(3)位或(|)運(yùn)算也是直接對數(shù)字的二進(jìn)制形式進(jìn)行計算,然后對上下同一位置的兩個數(shù)位進(jìn)行或運(yùn)算,只右兩個數(shù)位都為0時才得出0,其余的均為1.
(4)位異或(^)也是直接對二進(jìn)制形式進(jìn)行運(yùn)算。當(dāng)只有一個數(shù)位存放的是1時,它才返回1。其余的返回0。也就是兩個數(shù)位相同時返回0,不同時返回1.
(5)左移運(yùn)算也是對二進(jìn)制數(shù)進(jìn)行操作,相等于第一個操作數(shù)乘以(2的左移位數(shù)次冪)的積。
(6)有符號右移運(yùn)算也是對二進(jìn)制數(shù)進(jìn)行操作,相等于第一個操作數(shù)除以(2的右移位數(shù)次冪)的商。
(7)無符號右移運(yùn)算也是對二進(jìn)制數(shù)進(jìn)行操作,對于正數(shù),與有符號右移是相同的結(jié)果,但是對于負(fù)數(shù),就會所不同。
六、賦值運(yùn)算符
賦值運(yùn)算符包括:=(),+=(),-=(),*=(),/=(),%=(),<<=(),>>=(),>>>=()。
七、其他運(yùn)算符
1)、字符串運(yùn)算符:“+”,它的作用是將兩個字符串想加。規(guī)則:只要有一個字符串即可。
2)、逗號運(yùn)算符,可以在一條語句中執(zhí)行多個操作
3)、三元操作符:
如果想更詳細(xì)的了解ECMAScript運(yùn)算符的知識,可以訪問JavaScript高級教程中的ECMASscript一元運(yùn)算符這個系列中有詳細(xì)的運(yùn)算符教程。對于JS的運(yùn)算符來說,我們可以對比著C++,C#和Java來學(xué),這個還是相當(dāng)?shù)娜菀椎摹?/p>
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com