- 摩刻部落 - https://www.moke.tw/wordpress -

JavaScript腳本語言(3)-運算子

JavaScript是屬於C風格的程式語言,所以對於學習過C、C++或是Java的程式設計師而言,它的語法是很熟悉的。本篇說明的是JavaScript運算子,大部份和Java語言 [1]是一樣的,少數不同之處會在下面做說明。

算術運算子(Arithmetic Operators)

名稱 JavaScript 說明與範例
正號 + +2
明確指定為正數。
負號 - -3
加法 + 1 + 1 = 2
減法 - 5 - 3 = 2
乘法 * 3 * 2 = 6
除法 / 7 / 2 = 3.33333
餘數 % 7 % 2 = 1
整數除法,只留下餘數。可整除時餘數為0。
遞增 ++ A++:算式結束後把目前變數 A 的值 +1。
A = 10; print(A++); //印出 A = 10
++A:在執行算式之前把目前變數 A 的值 +1。
A = 10; print(++A); //印出 A = 11
遞減 -- A--:算式結束後把目前變數 A 的值 -1。
A = 10; print(A--); //印出 A = 10
--A:在執行算式之前把目前變數 A 的值 -1。
A = 10; print(--A); //印出 A = 9

關係/比較運算子(Relational/Comparison Operators)
JavaScript有二種特殊的相等運算子,分別是「===」和「!==」。由於JavaScript屬於鬆散型態,程式語言會自動轉換變數型態,所以使用「== (equality)」和「=== (identity)」來決定是否要轉換型態。== 是採用寬鬆的定義,只要內容相同型態不同也沒關係;而 === 則是一定要相同型態才會回傳 true,和傳統程式語言的相等運算子一樣。另外,如果是「NaN === NaN」會回傳false,因為 NaN 不等於任何值,可改用 isNaN() 檢查。

名稱 JavaScript 範例 結果
相等 == 1 == 2 false
"3" == 3 true
不相等 != 2 != "2" false
3 != 5 true
相同 === 1 === "1" false
3 === 3 true
不相同 !== 2 !== 2 false
5 !== "5" true
大於 > 5>3 true
2>2 false
大於等於 >= 4≧8 false
6≧6 true
小於 < 5<8 true
9<3 false
小於等於 <= 4≦8 true
7≦3 false

邏輯運算子(Logical Operators) (more) [1]

名稱 JavaScript 範例 說明
NOT ! NOT(5 > 3) = false 傳回和原本運算相反的布林值。
AND && (8 > 3) AND (1 < 7) = true
(6 > 3) AND (8 < 2) = false
當左右兩邊都是 true 時,結果為 true。
OR || (9 >= 3) OR (3 > 4) = true 左右兩邊只要有一個 true,結果為 true。
XOR ^ (8 > 3) XOR (1 < 7) = false
(6 > 3) XOR (8 < 2) = true
左右兩邊的布林值不同時為 true,相同則為 false。

位元運算子(Shift and Bitwise Operators)

名稱 JavaScript 範例 說明
補數運算 ~ NOT(0110) = (1001) 將 0 變成 1;1 變成 0。
左移運算 << (0010) << 2 = (1000) 將原本的位元左移 n 位之後,左側溢出的丟棄,右邊補 0。
維持符號右移 >> (1010) >> 1 = (1101) 將原本的位元右移 n 位之後,右側溢出的丟棄,左邊根據原來的符號填入 0 或 1。
無號右移 >>> (1001) >>> 1 = (0100) 將原本的位元右移 n 位之後,右側溢出的丟棄,左邊補 0。
AND運算 & (0010) AND (0011) = (0010) 左右兩數相同位數同樣是 1 的位元維持在 1,其餘為 0。
OR運算 | (0011) OR (0110) = (0111) 左右兩數相同位數只要有一個位元是 1 則為 1。
XOR運算 ^ (0011) XOR (0110) = (0101) 左右兩數相同位數不同值則為 1,同值為 0。

指定運算子(Assignment Operators)

名稱 JavaScript 範例 相當的算式
指定 =
加法指定 += 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
AND指定 &= x &= y x = x & y
OR指定 &= x |= y x = x | y
XOR指定 ^= x ^= y x = x ^ y

運算子的優先順序

順序 運算子 說明
1 () 括號
2 ++、--、-、+ 遞增、遞減、負號、正號
3 ~ 補數運算
4 ! 邏輯運算子NOT
5 *、/、% 乘法、除法、餘數
6 +、- 加法、減法
7 <<、>>、>>> 位元運算子左移、右移
8 <、<=、>、>= 關係運算子小於、大於
9 ==、!=、===、!== 關係運算子相等、不相等、相同、不相同
10 & 位元運算子AND
11 ^ 位元運算子XOR
12 | 位元運算子OR
13 && 邏輯運算子AND
14 || 邏輯運算子OR
15 ?: 條件控制運算子 [2]
16 =、op= 指定運算子