JavaScript 常用運算子

賦值運算子

名稱簡化的運算子意義
賦值 (en-US)x = yx = y
加法 (en-US)賦值 (en-US)x += yx = x + y
減法 (en-US)賦值 (en-US)x -= yx = x - y
乘法 (en-US)賦值 (en-US)x *= yx = x * y
除法 (en-US)賦值 (en-US)x /= yx = x / y
餘數 (en-US)賦值 (en-US)x %= yx = x % y
指數 (en-US)賦值 (en-US)x **= yx = x ** y
左移賦值 (en-US)x <<= yx = x << y
右移賦值 (en-US)x >>= yx = x >> y
無號右移賦值 (en-US)x >>>= yx = x >>> y
位元 AND 賦值 (en-US)x &= yx = x & y
位元 XOR 賦值 (en-US)x ^= yx = x ^ y
位元 OR 賦值 (en-US)x |= yx = x | y

比較運算子

運算子描述會回傳 True 的例子
等於 (en-US) (==)假如運算元等價就回傳 True。3 == var1 "3" == var1 3 == '3'
不等於 (en-US) (!=)假如運算元等價就回傳 True。var1 != 4 var2 != "3"
嚴格等於 (en-US) (===)假如運算元具有相同型態且等價則回傳 True。參考 Object.is (en-US) 及 JS 中的等價性3 === var1
嚴格不等於 (en-US) (!==)假如運算元具有相同型態但不等價,或是具有不同型態,回傳 True。var1 !== "3" 3 !== '3'
大於 (en-US) (>)假如左方運算元大於右方運算元,回傳 True。var2 > var1 "12" > 2
大於或等於 (en-US) (>=)假如左方運算元大於或等於右方運算元,回傳 True。var2 >= var1 var1 >= 3
小於 (en-US) (<)假如左方運算元小於右方運算元,回傳 True。var1 < var2 "2" < 12
小於或等於 (en-US) (<=)假如左方運算元小於或等於右方運算元,回傳 True。var1 <= var2 var2 <= 5

算術運算子

運算子描述範例
取餘數 (en-US) (%)二元運算子。回傳兩個運算元相除後的餘數。12 % 5 回傳 2.
增加 (en-US) (++)一元運算子。 將運算元增加 1。假如使用在運算元之前 (++x),會運算元回傳增加 1 後的值;假如使用在運算元之後。 (x++) 會回傳運算元加 1 前的值。假如 x是 3,那 ++x 將把 x 設定為 4 並回傳 4,而 x++ 會回傳 3 , 接著才把 x 設定為 4。
減少 (en-US) (--)一元運算子。 將運算元減少 1。回傳值的情況與 增加運算元 相同。假如 x是 3,那 --x 將把 x 設定為 2 並回傳 2,而 x-- 會回傳 3 , 接著才把 x 設定為 2。
(一元運算子)減號 (en-US) (-)一元運算子。回傳運算元的負數。假如 x 是 3,-x 回傳 -3。
(一元運算子)加號 (en-US) (+)一元運算子。嘗試將運算元轉換成數字,假如它還不是數字的話。+"3" 回傳 3。 +true 回傳 1.
指數運算子 (en-US) (**) 實驗性質計算以 a 為底的 b 次方, 也就是, a^b2 ** 3 回傳 810 ** -1 回傳 0.1.

位元運算子

運算子用法描述
位元 AND (en-US)a & b回傳兩個運算元對於每個 bit 做 AND 的結果。
位元 OR (en-US)a | b回傳兩個運算元對於每個 bit 做 OR 的結果。
位元 XOR (en-US)a ^ b回傳兩個運算元對於每個 bit 做 XOR 的結果。
位元 NOT (en-US)~ a將運算元中的每個 bit 反轉(1->0,0->1)。
左移 (en-US)a << b將 a 的每個 bit 向左移動 b 個 bits,空餘的位數以 0 填滿。
有號右移 (en-US)a >> b將 a 的每個 bit 向右移動 b 個 bits,空餘位數以最高位補滿。
以 0 填充的右移 (en-US)a >>> b將 a 的每個 bit 向右移動 b 個 bits,空餘的位數以 0 填滿。

位元邏輯運算子

運算式結果二元描述式
15 & 991111 & 1001 = 1001
15 | 9151111 | 1001 = 1111
15 ^ 961111 ^ 1001 = 0110
~15-16~ 0000 0000 … 0000 1111 = 1111 1111 … 1111 0000
~9-10~ 0000 0000 … 0000 1001 = 1111 1111 … 1111 0110

位元移動運算子

運算子描述範例
左移 (en-US) (<<)這個運算子會將第 一個運算元的每個 bit 向左移動 第二個運算元所指定的 bit 數量。左邊超出的位數會被捨棄,右邊空出的位數以 0 補齊。9<<2 得到 36,因為 1001 向左移動 2 bits 會得到 100100, 也就是二進位的 36。
有號右移 (en-US) (>>)這個運算子會將第 一個運算元的每個 bit 向右移動 第二個運算元所指定的 bit 數量。右邊超出的位數會被捨棄,左邊空出的位數以最高位補齊。9>>2 得到 2,因為 1001 向右移動 2 bits 會得到 10,也就是二進位的 2。 相同的, -9>>2 會得到 -3,因為最高位用來表示正負號的 bit 被保留了。
以 0 填充的右移 (en-US) (>>>)這個運算子會將第 一個運算元的每個 bit 向右移動 第二個運算元所指定的 bit 數量。右邊超出的位數會被捨棄,左邊空出的位數以 0 補齊。19>>>2 得到 4, 因為 10011 向右移動 2 bits 會得到 100,是二進位的 4。對於非負的數字而言, 以 0 填充的右移 會得到和 有號右移相同的結果。

邏輯運算子

OperatorUsageDescription
邏輯 AND (en-US) (&&)運算式1 && 運算式2假如 運算式1 可以被轉換成 false 的話,回傳 運算式1; 否則,回傳 運算式2。 因此,&&只有在 兩個運算元都是 True 時才會回傳 True,否則回傳 false
邏輯 OR (en-US) (||)運算式1 || 運算式2假如 運算式1 可以被轉換成 true 的話,回傳 運算式1; 否則,回傳 運算式2。 因此,||在 兩個運算元有任一個是 True 時就會回傳 True,否則回傳 false
邏輯 NOT (en-US) (!)!運算式假如單一個運算元能被轉換成 True 時,回傳false , 不然回傳 true

參考資料:https://developer.mozilla.org/zh-TW/docs/Web/JavaScript/Guide/Expressions_and_operators

期待您的留言

Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *