[toc]
## 什么是運算符?
用表達式 4 + 5 能很快得到 4 和 5 這兩個數的和為 9。這里 4 和 5 被稱為運算數,+ 叫做運算符。JaScript 語言支持以下類型的運算符:
1. 算術運算符
2. 比較運算符
3. 邏輯(或關系)運算符
4. 賦值運算符
5. 條件(或三元)運算符
讓我們依次看一下這些運算符。
## 算數運算符
JavaScript語言支持以下算術運算符:
給定 A=10,B=20,下面的表格解釋了這些算術運算符:
|運算符|描述|例子|
| -- | -- | -- |
|+|兩個運算數相加|A + B = 30|
|-|第一個運算數減去第二個運算數|A - B = -10|
|*|運算數相乘|A * B = 200|
|/|分子除以分母|B / A = 2|
|%|模數運算符,整除后的余數|B % A = 0|
|++|增量運算符,整數值逐次加1|A++ = 11|
|--|減量運算符,整數值逐次減1|A-- = 9|
> 注意 : + 運算符不僅可以用于數字相加,還可以用于把文本值或字符串變量加起來(連接起來)。例如,"a" + 10 = “a10”。
## 比較運算符
JavaScript語言支持以下比較運算符:
給定 A=10,B=20,下面的表格解釋了這些比較運算符:
|運算符|描述|例子|
| -- | -- | -- |
|==|檢查兩個運算數的值是否相等,如果是,則結果為true|A == B 為false|
|!=|檢查兩個運算數的值是否相等,如果不相等,則結果為true|A != B 為true|
|>|檢查左邊運算數是否大于右邊運算數,如果是,則結果為true|A > B 為false|
|<|檢查左邊運算數是否小于右邊運算數,如果是,則結果為true|A < B 為true|
|>=|檢查左邊運算數是否大于或者等于右邊運算數,如果是,則結果為true|A >= B 為false|
|<=|檢查左邊運算數是否小于或者等于運算數,如果是,則結果為true|A <= B 為true|
## 邏輯運算符
JavaScript語言支持以下邏輯運算符:
給定 A=10,B=20,下面的表格解釋了這些邏輯運算符:
|運算符|描述|例子|
| -- | -- | -- |
|&&|稱為邏輯與運算符。如果兩個運算數都非零,則結果為true。|A && B 為true|
|丨丨|稱為邏輯或運算符。如果兩個運算數中任何一個非零,則結果為true。|A 丨丨 B 為 true|
|!|稱為邏輯非運算符。用于改變運算數的邏輯狀態。如果邏輯狀態為true,則通過邏輯非運算符可以使邏輯狀態變為false|!(A && B) 為false|
## 按位運算符
JavaScript語言支持以下邏輯運算符:
給定 A=2,B=3,下面的表格解釋了這些邏輯運算符
|運算符|描述|例子|
| -- | -- | -- |
|&|稱為按位與運算符。它對整型參數的每一個二進制位進行布爾與操作。|A & B = 2 .|
|\| |稱為按位或運算符。它對整型參數的每一個二進制位進行布爾或操作。|A 丨 B = 3.|
|^|稱為按位異或運算符。它對整型參數的每一個二進制位進行布爾異或操作。異或運算是指第一個參數或者第二個參數為true,并且不包括兩個參數都為true的情況,則結果為true。|(A ^ B) = 1.|
|~|稱為按位非運算符。它是一個單運算符,對運算數的所有二進制位進行取反操作。|~B = -4 .|
|<<|稱為按位左移運算符。它把第一個運算數的所有二進制位向左移動第二個運算數指定的位數,而新的二進制位補0。將一個數向左移動一個二進制位相當于將該數乘以2,向左移動兩個二進制位相當于將該數乘以4,以此類推。|A << 1 = 4.|
|>>|稱為按位右移運算符。它把第一個運算數的所有二進制位向右移動第二個運算數指定的位數。為了保持運算結果的符號不變,左邊二進制位補0或1取決于原參數的符號位。如果第一個運算數是正的,運算結果最高位補0;如果第一個運算數是負的,運算結果最高位補1。將一個數向右移動一位相當于將該數乘以2,向右移動兩位相當于將該數乘以4,以此類推。|A >> 1 = 1.|
|>>>|稱為0補最高位無符號右移運算符。這個運算符與>>運算符相像,除了位移后左邊總是補0. |A >>> = 1.|
## 賦值運算符
JavaScript語言支持以下賦值運算符:
|運算符|描述|例子|
| -- | -- | -- |
|=|簡單賦值運算符,將右邊運算數的值賦給左邊運算數|C = A + B 將A+B的值賦給C|
|+=|加等賦值運算符,將右邊運算符與左邊運算符相加并將運算結果賦給左邊運算數|C += A 相當于 C = C + A|
|-=|減等賦值運算符,將左邊運算數減去右邊運算數并將運算結果賦給左邊運算數|C -= A 相當于C = C - A|
|*=|乘等賦值運算符,將右邊運算數乘以左邊運算數并將運算結果賦給左邊運算數|C *= A 相當于C = C * A|
|/=|除等賦值運算符, 將左邊運算數除以右邊運算數并將運算結果賦值給左邊運算數|C /= A 相當于 C = C / A|
|%=|模等賦值運算符,用兩個運算數做取模運算并將運算結果賦值給左邊運算數|C %= A 相當于 C = C % A|
> 注意:同樣的邏輯可以應用到位運算符,因此就有<<= , >>= , >>>= , &= , |= 以及 ^= 。
## 其他運算符
條件運算符(?:)
有一種運算符叫條件運算符。首先判斷一個表達式是真或假,然后根據判斷結果執行兩個給定指令中的一個。條件運算符語法如下:
|運算符|描述|例子|
| -- | -- | -- |
|? :|條件表達式|如果條件為真 ? X值 : Y值|
## typeof 運算符
typeof是一個置于單個參數之前的一元運算符,這個參數可以是任何類型的。它的值是一個表示運算數的類型的字符串。
typeof運算符可以判斷“數值”,“字符串”,“布爾”類型,看運算數是一個數字,字符串還是布爾值,并且根據判斷結果返回true或者false。
下表是typeof運算符的返回值:
|類型|Typeof返回字符串|
| -- | -- |
|數值|"number"|
|字符串|"string"|
|布爾|"boolean"|
|對象|"object"|
|函數|"function"|
|未定義|"undefined"|
|空|"object"|