標籤:減法 字典順序 assign 自訂對象 amp .com write 標準 bool
操作符
JavaScript 有賦值、比較、算術、位、邏輯、字串和特殊運算子。本章描述了操作符,以及關於操作符優先順序的一些資訊。
表 2.1 JavaScript 所有操作符簡明列表。
表 2.1 JavaScript 操作符
| 操作符分類 |
操作符 |
描述 |
算 術 操 作 符 |
+ |
(加法) 將兩個數相加。 |
| ++ |
(自增) 將表示數值的變數加一(可以返回新值或舊值)。 |
| - |
(求相反數,減法) 作為求相反數操作符時返回參數的相反數。作為二進位操作符時,將兩個數相減。 |
| -- |
(自減) 將表示數值的變數減一(可以返回新值或舊值)。 |
| * |
(乘法) 將兩個數相乘。 |
| / |
(除法) 將兩個數相除。 |
| % |
(求餘) 求兩個數相除的餘數。 |
| 字串操作符 |
+ |
(字串加法) 串連兩個字串。 |
| += |
串連兩個字串,並將結果賦給第一個字串。 |
邏 輯 操 作 符 |
&& |
(邏輯與) 如果兩個運算元都是真的話則返回真。否則返回假。 |
| || |
(邏輯或) 如果兩個運算元都是假的話則返回假。否則返回真。 |
| ! |
(邏輯非) 如果其單一運算元為真,則返回假。否則返回真。 |
位 操 作 符 |
& |
(按位與) 如果兩個運算元對應位都是 1 的話則在該位返回 1。 |
| ^ |
(按位異或) 如果兩個運算元對應位只有一個 1 的話則在該位返回 1。 |
| | |
(按位或) 如果兩個運算元對應位都是 0 的話則在該位返回 0。 |
| ~ |
(求反) 反轉運算元的每一位。 |
| << |
(左移) 將第一運算元的二進位形式的每一位向左移位,所移位的數目由第二運算元指定。右面的空位補零。 |
| >> |
(算術右移) 將第一運算元的二進位形式的每一位向右移位,所移位的數目由第二運算元指定。忽略被移出的位。 |
| >>> |
(邏輯右移) 將第一運算元的二進位形式的每一位向右移位,所移位的數目由第二運算元指定。忽略被移出的位,左面的空位補零。 |
賦 值 操 作 符 |
= |
將第二運算元的值賦給第一運算元。 |
| += |
將兩個數相加,並將和賦給第一個數。 |
| -= |
將兩個數相減,並將差賦給第一個數。 |
| *= |
將兩個數相乘,並將積賦給第一個數。 |
| /= |
將兩個數相除,並將商賦給第一個數。 |
| %= |
計算兩個數相除的餘數,並將餘數賦給第一個數。 |
| &= |
執行按位與,並將結果賦給第一個運算元。 |
| ^= |
執行按位異或,並將結果賦給第一個運算元。 |
| |= |
執行按位或,並將結果賦給第一個運算元。 |
| <<= |
執行左移,並將結果賦給第一個運算元。 |
| >>= |
執行算術右移,並將結果賦給第一個運算元。 |
| >>>= |
執行邏輯右移,並將結果賦給第一個運算元。 |
比 較 操 作 符 |
== |
如果運算元相等的話則返回真。 |
| != |
如果運算元不相等的話則返回真。 |
| > |
如果左運算元大於右運算元的話則返回真。 |
| >= |
如果左運算元大於等於右運算元的話則返回真。 |
| < |
如果左運算元小於右運算元的話則返回真。 |
| <= |
如果左運算元小於等於右運算元的話則返回真。 |
特 殊 操 作 符 |
?: |
執行一個簡單的“if...else”語句。 |
| , |
計算兩個運算式,返回第二個運算式的值。 |
| delete |
允許你刪除一個對象的屬性或數組中指定的元素。 |
| new |
允許你建立一個使用者自訂物件類型或內建物件類型的執行個體。 |
| this |
可用於引用當前對象的關鍵字。 |
| typeof |
返回一個字串,表明未計算的運算元的類型。 |
| void |
該操作符指定了要計算一個運算式但不傳回值。 |
賦值操作符
賦值操作符會根據其右運算元側的值給左運算元賦值。
最基本的賦值運算元是等號(=),它會將右運算元的值直接賦給左運算元。也就是說,x = y 將把 y 的值賦給 x。其它的賦值操作符都是標準操作的縮減形式,列在表 2.2 中。
表 2.2 賦值操作符
| 縮寫操作符 |
含義 |
| x += y |
x = x + y |
| x -= y |
x = x - y |
| x *= y |
x = x * y |
| x /= y |
x = x / y |
| x %= y |
x = x % y |
| x <<= y |
x = x << y |
| x >>= y |
x = x >> y |
| x >>>= y |
x = x >>> y |
| x &= y |
x = x & y |
| x ^= y |
x = x ^ y |
| x |= y |
x = x | y |
比較操作符
所謂比較操作符,就是會比較其兩邊的運算元,並根據比較結果為真或假返回邏輯值。運算元可以是數值或字串值。如果使用字串值的話,比較是基於標準的字典順序。
相關內容列在了表 2.3 中。對於該表中的樣本,我們假定 var1 被賦予了值 3,而 var2 被賦予了值 4。
表 2.3 比較操作符
| 操作符 |
描述 |
返回真的例子 |
| 相等(==) |
如果運算元相等的話則返回真。 |
3 == var1 |
| 不等(!=) |
如果運算元不等的話則返回真。 |
var1 != 4 |
| 大於(>) |
如果左運算元大於右運算元的話則返回真。 |
var2 > var1 |
| 大於或等於(>=) |
如果左運算元大於等於右運算元的話則返回真。 |
var2 >= var1 var1 >= 3 |
| 小於(<) |
如果左運算元小於右運算元的話則返回真。 |
var1 < var2 |
| 小於或等於(<=) |
如果左運算元小於等於右運算元的話則返回真。 |
var1 <= var2 var2 <= 5 |
算術操作符
將給定數值(常量或變數)進行給定的計算,並返回一個數值。標準的算術操作符是加(+)、減(-)、乘(*)、除(/)四則運算。這些操作符與在其它程式設計語言中的作用一樣。
% (取餘)
取餘操作符用法如下:
var1 % var2
取餘運算子將返回第一個運算元除以第二個運算元的餘數。對於上面的例子來說,將返回 var1 變數除以 var2 變數的餘數。更具體的例子是,12 % 5 將返回 2。
++ (自增)
自增操作符用法如下:
var++ 或 ++var
該自增操作符將自增運算元(自己加上 1)並返回一個值。如果寫在變數後面(如 x++),將返回自增前的值。如果寫在變數前面(如 ++x),將返回自增後的值。
例如,如果 x 是 3,那麼語句 y = x++ 將先把 y 置為 3 再將 x 自增為 4。相反,語句 y = ++x 將先將 x 自增為 4,再將 y 置為 4。
-- (自減)
自減操作符用法如下:
var-- 或 --var
該自增操作符將自減運算元(自己減去 1)並返回一個值。如果寫在變數後面(如 x--),將返回自減前的值。如果寫在變數前面(如 --x),將返回自減後的值。
例如,如果 x 是 3,那麼語句 y = x-- 將先把 y 置為 3 再將 x 自減為 2。相反,語句 y = --x 將先將 x 自減為 2,再將 y 置為 2。
- (求相反數)
求相反數運算元將取得運算元的相反數。例如,y = -x 將把 x 相反數的值賦給 y;也就是說,如果 x 是 3 的話,y 就會獲得 -3 而 x 還是 3。
位操作符
執行位操作時,操作符會將運算元看作一串二進位位(1和0),而不是十進位、十六進位或八位元字。例如,十進位的 9 就是二進位的 1001。位操作符在執行的時候會以二進位形式進行操作,但返回的值仍是標準的 JavaScript 數值。
表 2.4 JavaScript 位操作符總覽
表 2.4 位操作符
| 操作符 |
用法 |
描述 |
| 按位與 |
a & b |
如果兩個運算元對應位都是 1 的話則在該位返回 1。 |
| 按位或 |
a | b |
如果兩個運算元對應位都是 0 的話則在該位返回 0。 |
| 按位異或 |
a ^ b |
如果兩個運算元對應位只有一個 1 的話則在該位返回 1。 |
| 求反 |
~ a |
反轉運算元的每一位。 |
| 左移 |
a << b |
將 a 的二進位形式左移 b 位。右面的空位補零。 |
| 算術右移 |
a >> b |
將 a 的二進位形式右移 b 位。忽略被移出的位。 |
| 邏輯右移 |
a >>> b |
將 a 的二進位形式右移 b 位。忽略被移出的位,左側補入 0。 |
位邏輯操作符
從原理上講,位邏輯操作符的工作流程是這樣的:
- 將運算元轉換為 32 位的整型數值並用二進位表示。
- 第一運算元的每一位與第二運算元的對應位配對:第一位對第一位,第二位對第二位,以此類推。
- 對每一對位應用操作符,最終結果按位組合起來。
例如,9 的二進位表示為 1001,15 的二進位表示為 1111。所以如果對這兩個數應用位邏輯操作符,結果應該像下面這樣:
- 15 & 9 結果為 9 (1111 & 1001 = 1001)
- 15 | 9 為 15 (1111 | 1001 = 1111)
- 15 ^ 9 為 6 (1111 ^ 1001 = 0110)
移位操作符
移位操作符需要兩個運算元:第一個是要進行移位的數值,第二個指定要對第一個數移位的數目。移位的方向由使用的操作符決定。
移位操作符將把兩個操作符轉換為 32 位整型數值,並返回與左運算元類型相同的結果。
<< (左移)
該操作符將把第一個運算元向左移若干位。移出的位將被忽略。右側空位補零。
例如,9<<2 結果為 36,因為 1001 向左移兩位變成 100100,這是 36。
>> (算術右移)
該操作符將把第一個運算元享有移若干位。移出的位將被忽略。左側的空位補上與原來最左面位相同的值。
例如,9>>2 結果為 2,因為 1001 右移兩位變成 10,這是 2。反之,-9>>2 結果為 -3,因為要考慮到符號位。
>>> (邏輯右移)
該操作符將把第一個運算元享有移若干位。移出的位將被忽略。左側的空位補零。
例如,19>>>2 結果為 4,因為 10011 右移兩位變成 100,這是 4。對於非負數,算術右移和邏輯右移結果相同。
邏輯操作符
邏輯操作符用 Boolean 值(布爾邏輯值)作為運算元,並返回 Boolean 值。
表 2.5 描述的很清楚。
表 2.5 邏輯操作符
| 操作符 |
用法 |
描述 |
| 與(&&) |
expr1 && expr2 |
如果 expr1 為假則返回之,否則返回 expr2。 |
| 或(||) |
expr1 || expr2 |
如果 expr1 為真則返回之,否則返回 expr2。 |
| 非(!) |
!expr |
如果 expr 為真則返回假,否則返回真。 |
樣本
考慮下面的指令碼:
<script language="JavaScript1.2">"
v1 = "貓";
v2 = "狗";
v3 = false;
document.writeln("t && t 返回 " + (v1 && v2));
document.writeln("f && t 返回 " + (v3 && v1));
document.writeln("t && f 返回 " + (v1 && v3));
document.writeln("f && f 返回 " + (v3 && (3 == 4))); document.writeln("t || t 返回 " + (v1 || v2));
document.writeln("f || t 返回 " + (v3 || v1));
document.writeln("t || f 返回 " + (v1 || v3));
document.writeln("f || f 返回 " + (v3 || (3 == 4)));
document.writeln("!t 返回 " + (!v1));
document.writeln("!f 返回 " + (!v3));
</script>
該指令碼將顯示下列內容:
t && t 返回 狗
f && t 返回 false
t && f 返回 false
f && f 返回 false
t || t 返回 貓
f || t 返回 貓
t || f 返回 貓
f || f 返回 false
!t 返回 false
!f 返回 true
JavaScript操作符匯總