【JavaScript】演算子一覧

### 算術演算子

| 演算子 | 概要         | 例                         | 
| ------ | ------------ | -------------------------- | 
| +      | 数値の加算   | 3 + 5 ➡︎ 8               | 
| -      | 数値の減算   | 10 -7 ➡︎ 3               | 
| *      | 数値の乗算   | 3 * 5 ➡︎ 15              | 
| **     | 数値のべき乗 | 2 ** 3 ➡︎ 8              | 
| /      | 数値の徐算   | 10 / 5 ➡︎ 2              | 
| %      | 数値の剰余   | 10 /4 ➡︎ 2               | 
| ++     | 前置加算     | x = 3; y = ++x;  ➡︎ yは4 | 
| ++     | 後置加算     | x = 3; y = x++; ➡︎ yは3  | 
| --     | 前置減算     | x = 3; y = --x; ➡︎ yは2  | 
| --     | 後置減算     | x = 3; y = x--; ➡︎ yは3  | 

### 代入演算子

| 演算子        | 概要                                                             | 例                           | 
| ------------- | ---------------------------------------------------------------- | ---------------------------- | 
| =             | 変数などに値を代入                                               | x = 1                        | 
| +=            | 左辺の値に右辺の値を加算したものを代入                           | x = 3; x += 2 ➡︎ 5         | 
| -=            | 左辺の値から右辺の値を減算したものを代入                         | x = 3; x -= 2 ➡︎ 1         | 
| *=            | 左辺の値に右辺の値を乗算したものを代入                           | x = 3; x *= 2 ➡︎ 6         | 
| /=            | 左辺の値を右辺の値で除算したものを代入                           | x = 3; x /= 2 ➡︎ 1.5       | 
| %=            | 左辺の値を右辺の値で除算した余りを代入                           | x = 3; x %= 2 ➡︎ 1         | 
| **=           | 左辺の値を右辺の値でべき乗したものを代入                         | x = 3; x **= 2 ➡︎ 9        | 
| &=            | 左辺の値を右辺の値でビット論理積演算した結果を代入               | x = 10; x &= 5; ➡︎ 0       | 
| &#124;=       | 左辺の値を右辺の値でビット論理和演算した結果を代入               | x = 10; x &#124;= 5; ➡︎ 15 | 
| ^=            | 左辺の値を右辺のでビット排他的論理和演算した結果を代入           | x = 10; x ^= 5 ➡︎ 15       | 
| &&=           | 左辺の値がtrueの場合にだけ右辺に代入 (ES2021で導入された)        | x = 1; x &&= 5; ➡︎ 5       | 
| &#124;&#124;= | 左辺の値がfalseの場合にだけ右辺を代入 (ES2021で導入された)       | x = 0; x &#124;&#124;= 5; ➡︎ 5       | 
| ??=           | 左の値がnull / undefinedの場合だけ右辺を代入(ES2021で導入された) | x = null; x ??= 5; ➡︎ 5    | 
| <<=           | 左辺の値を右辺の値だけ左シフトした結果を代入                     | x = 10; x <<= 1; ➡︎ 20     | 
| >>=           | 左辺の値を右辺の値だけ右シフトした結果を代入                     | x = 10; x >> =1 ➡︎ 5       | 
| >>>=          | 左辺の値を右辺の値だけ右シフトした結果を代入　(符号なし)               | x = 10; x >> =2 ➡︎ 2       | 

### 比較演算子

| 演算子 | 概要                                                                                                                   | 例                        | 
| ------ | ---------------------------------------------------------------------------------------------------------------------- | ------------------------- | 
| ==     | 左辺と右辺の値が等しい場合はtrue                                                                                       | 5 == 5 ➡︎ true          | 
| !=     | 右辺と左辺が等しくない場合はtrue                                                                                       | 5 != t ➡︎ true          | 
| <      | 左辺が右辺より小さいい場合はtrue                                                                                       | 5 < 5 ➡︎ false          | 
| <=     | 左辺が右辺以下の場合はtrue                                                                                             | 5 <= 5 ➡︎ true          | 
| >      | 左辺が右辺より大きい場合はtrue                                                                                         | 5 > 3 ➡︎ true           | 
| >=     | 左辺が右辺以上の場合はtrue                                                                                             | 5 >= 5 ➡︎ true          | 
| ===    | 左辺と右辺の値が等しくデータ型も同じ場合はtrue                                                                         | 5 === '5' ➡︎ false      | 
| !==    | 左辺と右辺の値が等しくない場合、またはデータが異なる異なる場合はtrue                                                   | 5 !== '5' ➡︎ true       | 
| ?:     | 条件演算子。「条件式 ? 式1 : 式2」。条件式がtrueの場合は式1を、falseの場合は式2を返す                                  | (10 === 1) ? 1 : 0 ➡︎ 0 | 
| ??     | null合体演算子。左辺がnullでなければその値、、左辺がnullならば右辺の値 (両方ともnullならばnull)  (ES2020で導入された) | null ?? 5 ➡︎ 5          | 

### 論理演算子

| 演算子       | 概要                                 | 例                         | 
| ------------ | ------------------------------------ | -------------------------- | 
| &&           | 左右の式がともにtrueの場合はtrue     | x && y ➡︎ false         | 
| &#124;&#124; | 左右の式のどちらかがtrueの場合はtrue | x &#124;&#124; y ➡︎ true | 
| !            | 式がfalseの場合はtrue                | !x ➡︎ false              | 

### ビット演算子

| 演算子 | 概要                                                                                 | 例                                                   | 
| ------ | ------------------------------------------------------------------------------------ | ---------------------------------------------------- | 
| &      | 左式と右式の両方にセットされているビットをセット                                     | 10 & 5 ➡︎ 1010 & 0101 ➡︎ 0000 ➡︎ 0             | 
| &#124; | 左式と右式のどちらかにセットされているビットをセット                                 | 10 &#124; 5 ➡︎ 1010 &#124; 0101 ➡︎ 1111 ➡︎ 15  | 
| ^      | 左式と右式のどちらかにセットされていて、かつ、両方にセットされていないビットをセット | 10 ^ 5 ➡︎ 1010 ^ 0101 ➡︎ 1111 ➡︎ 15            | 
| -      | ビットを反転                                                                         | -10 ➡︎  1010 ➡︎ 0101 ➡︎ -11                    | 
| <<     | ビットを左にシフト                                                                   | 10 << 1 ➡︎ 1010 << 1 ➡︎ 10100 ➡︎ 10100 ➡︎ 20 | 
| >>     | ビットを右にシフト (算術シフト)                                                      | 10 >> 1 ➡︎ 1010 >> 1 ➡︎ 0101 ➡︎ 5              | 
| >>>    | ビットを右シフト (論理シフト)                                                        | 10 >>> 2 ➡︎ 1010 >>> 2 ➡︎ 0010 ➡︎ 2            | 

### その他の演算子

| 演算子     | 概要                                               | 
| ---------- | -------------------------------------------------- | 
| , (カンマ) | 左右の式を続けて実行                               | 
| delete     | オブジェクトのプロパティや配列の要素を削除         | 
| in         | 指定されたプロパティがオブジェクトに存在するか判定 | 
| instanceof | オブジェクトが指定されたクラスのインスタンスか判定 | 
| new        | 新しいインスタンスを生成                           | 
| typeof     | オペランドのデータ型を取得                         | 
| void       | 未定義値を返す                                     |