JavaScript 運算子
  1. 指定運算
  2. 名稱運算子說明
    右值指定給左值x = yx = y
    加法指定x += yx = x + y
    減法指定x -= yx = x - y
    乘法指定x *= yx = x * y
    除法指定x /= yx = x / y
    餘數指定x %= yx = x % y
    指數指定x **= yx = x ** y
    左移指定x <<= yx = x << y
    右移指定x >>= yx = x >> y
    無號右移指定x >>>= yx = x >>> y
    位元 and 指定x &= yx = x & y
    位元 xor 指定x ^= yx = x ^ y
    位元 or 指定x |= yx = x | y

  3. 比較運算子
  4. 名稱運算子說明範例
    等於 ==假如運算元等價就回傳True3 == var1
    "3" == var1
    3 == '3'
    不等於!=假如運算元等價就回傳True。var1 != 4
    var2 != "3"
    嚴格等於===假如運算元具有相同型態且等價則回傳True。3 === var1
    嚴格不等於!==假如運算元具有相同型態但不等價,或是具有不同型態,回傳True。var1 !== "3"
    3 !== '3'
    大於>假如左方運算元大於右方運算元,回傳True。var2 > var1
    "12" > 2
    大於或等於>=假如左方運算元大於或等於右方運算元,回傳True。var2 >= var1
    var1 >= 3
    小於<假如左方運算元小於右方運算元,回傳True。var1 < var2
    "2" < 12
    小於或等於<=假如左方運算元小於或等於右方運算元,回傳True。var1 <= var2
    var2 <= 5

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

  7. 位元運算子
  8. 名稱運算子說明範例
    位元 and & a & b回傳兩個運算元對於每個bit做AND的結果。
    位元 or | a | b回傳兩個運算元對於每個bit做OR的結果。
    位元 xor ^ a ^ b回傳兩個運算元對於每個bit做XOR的結果。
    位元 not ~ ~ a將運算元中的每個bit反轉(1->0,0->1)。
    左移 << a << b將 a 的每個bit向左移動 b 個bits,空餘的位數以0填滿。
    有號右移>>a >> b將 a 的每個bit向右移動 b 個bits,空餘位數以最高位補滿。
    以 0 填充的右移 >>> a >>> b將 a 的每個bit向右移動 b 個bits,空餘的位數以0填滿。
    左移<<這個運算子會將第 一個運算元的每個bit向左移動 第二個運算元所指定的bit數量。左邊超出的位數會被捨棄,右邊空出的位數以0補齊。9<<2 得到 36,因為1001 向左移動 2 bits 會得到 100100, 也就是二進位的 36。
    有號右移 >> 這個運算子會將第 一個運算元的每個bit向右移動 第二個運算元所指定的bit數量。右邊超出的位數會被捨棄,左邊空出的位數以最高位補齊。9>>2 得到 2,因為 1001 向右移動 2 bits 會得到 10,也就是二進位的 2。 相同的, -9>>2 會得到 -3,因為最高位用來表示正負號的bit被保留了。
    以0填充的右移(>>>) >>> 這個運算子會將第 一個運算元的每個bit向右移動 第二個運算元所指定的bit數量。右邊超出的位數會被捨棄,左邊空出的位數以0補齊。19>>>2 得到 4, 因為 10011 向右移動 2 bits 會得到 100,是二進位的 4。對於非負的數字而言, 以0填充的右移 會得到和 有號右移相同的結果。

  9. 邏輯運算子
  10. 名稱運算子說明範例
    邏輯 and (&&) && 運算式1 && 運算式2假如 運算式1 可以被轉換成 false的話,回傳 運算式1; 否則,回傳 運算式2。 因此,&&只有在 兩個運算元都是True 時才會回傳 True,否則回傳 false。
    邏輯 or || 運算式1 || 運算式2假如 運算式1 可以被轉換成 true的話,回傳 運算式1; 否則,回傳 運算式2。 因此,||在 兩個運算元有任一個是True 時就會回傳 True,否則回傳 false。
    邏輯 not ! !運算式假如單一個運算元能被轉換成True時,回傳false , 不然回傳 true。

  11. 字串運算子
  12. 名稱運算子說明範例
    連接 + 字串連接運算。
    連接指定 += 運算式1 || 運算式2
    邏輯比對 >、>=、<、<=、==、!= 比對規則
    1. 字串比對從第 1 個字開始,一字一字逐一比對 ASCII 碼,大者勝。
    2. 當每個字都一樣時,就比長度,長者勝。
    3. 空字串 != null
    假如單一個運算元能被轉換成True時,回傳false , 不然回傳 true。

  13. 其他運算子
  14. 名稱運算子說明範例
    條件運算( 條件式 ? 條件為真返回值 : 條件為假返回值 ) x = (a ? b : c)
    建立物件new 物件變數 var x = new Number();
    刪除物件
    物件屬性
    物件索引
    delete 物件變數 delete 物件名稱
    delete 物件名稱.性質
    delete 物件名稱[索引]
    查詢變數資料型態typeof(物件變數) var x = new Number();
    查詢物件是否擁有該性質性質名稱 in 物件名稱 var x = new Math();
    alert("'PI' in x");//true
    var y = new String("Hello~");
    alert("length" in y);//true
    查詢變數資料型態typeof(物件變數) var x = new Number();

javascript 運算子優先順序
成員 . []
呼叫/建立 實例 () new
反向/增加 ! ~ - + ++ -- typeof void delete
乘法/除法 * / %
加法/減法 + -
位元移動 << >> >>>
關係運算子 < <= > >= in instanceof
相等性 == != === !==
位元 and &
位元 xor ^
位元 or |
邏輯 and &&
邏輯 or ||
條件運算子 ?:
指定運算子 = += -= *= /= %= <<= >>= >>>= &= ^= |=
逗點運算子 ,