JavaScript 運算子優先順序
運算子優先順序描述了算術表示式中執行操作的順序。
乘法(*)和除法(/)的優先順序高於加法(+)和減法(-)。
與傳統數學一樣,乘法先完成
let x = 100 + 50 * 3;
自己動手試一試 »
使用括號時,括號內的操作會先計算
let x = (100 + 50) * 3;
自己動手試一試 »
具有相同優先順序的操作(如 * 和 /)從左到右計算
let x = 100 / 50 * 3;
自己動手試一試 »
運算子優先順序值括號中的表示式會在表示式的其餘部分之前計算函式會在結果用於表示式的其餘部分之前執行 |
|||
| 值 | 運算子 | 描述 | 示例 |
| 18 | ( ) | 表示式分組 | (100 + 50) * 3 |
| 17 | . | 成員 | person.name |
| 17 | [] | 成員 | person["name"] |
| 17 | ?. | 可選鏈 ES2020 | x ?. y |
| 17 | () | 函式呼叫 | myFunction() |
| 17 | new | 帶引數的新建 | new Date("June 5,2022") |
| 16 | new | 不帶引數的新建 | new Date() |
|
遞增運算子 字尾遞增的執行早於字首遞增 |
|||
| 15 | ++ | 字尾遞增 | i++ |
| 15 | -- | 字尾遞減 | i-- |
| 14 | ++ | 字首遞增 | ++i |
| 14 | -- | 字首遞減 | --i |
| 非運算子 | |||
| 14 | ! | 邏輯非 | !(x==y) |
| 14 | ~ | 按位非 | ~x |
| 一元運算子 | |||
| 14 | + | 一元加 | +x |
| 14 | - | 一元減 | -x |
| 14 | typeof | 資料型別 | typeof x |
| 14 | void | Void 計算 | void(0) |
| 14 | 刪除 | 屬性刪除 | delete myCar.color |
|
算術運算子 指數運算比乘法運算更早執行 乘法和除法比加法和減法更早執行 |
|||
| 13 | ** | 指數運算 ES2016 | 10 ** 2 |
| 12 | * | 乘法 | 10 * 5 |
| 12 | / | 除法 | 10 / 5 |
| 12 | % | 除法餘數 | 10 % 5 |
| 11 | + | 加法 | 10 + 5 |
| 11 | - | 減法 | 10 - 5 |
| 11 | + | 連線 | "John" + "Doe" |
| 移位運算子 | |||
| 10 | << | 左移 | x << 2 |
| 10 | >> | 右移(有符號) | x >> 2 |
| 10 | >>> | 右移(無符號) | x >>> 2 |
| 關係運算符 | |||
| 9 | in | 物件中的屬性 | "PI" in Math |
| 9 | instanceof | 物件的例項 | x instanceof Array |
| 比較運算子 | |||
| 9 | < | 小於 | x < y |
| 9 | <= | 小於或等於 | x <= y |
| 9 | > | 大於 | x > y |
| 9 | >= | 大於或等於 | x >= Array |
| 8 | == | 等於 | x == y |
| 8 | === | 嚴格相等 | x === y |
| 8 | != | 不等 | x != y |
| 8 | !== | 嚴格不相等 | x !== y |
| 按位運算子 | |||
| 7 | & | 按位與 | x & y |
| 6 | ^ | 按位異或 | x ^ y |
| 5 | | | 按位或 | x | y |
| 邏輯運算子 | |||
| 4 | && | 邏輯與 | x && y |
| 3 | || | 邏輯或 | x || y |
| 3 | ?? | Nullish Coalescing ES2020 | x ?? y |
| 條件(三元)運算子 | |||
| 2 | ? : | 條件 | ? "yes" : "no" |
|
賦值運算子 賦值在其他操作之後執行 |
|||
| 2 | = | 簡單賦值 | x = y |
| 2 | : | 冒號賦值 | x: 5 |
| 2 | += | 加法賦值 | x += y |
| 2 | -= | 減法賦值 | x -= y |
| 2 | *= | 乘法賦值 | x *= y |
| 2 | **= | 冪賦值 | x **= y |
| 2 | /= | 除法賦值 | x /= y |
| 2 | %= | 餘數賦值 | x %= y |
| 2 | <<= | 左移賦值 | x <<= y |
| 2 | >>= | 右移賦值 | x >>= y |
| 2 | >>>= | 無符號右移 | x >>>= y |
| 2 | &= | 按位與賦值 | x &= y |
| 2 | |= | 按位或賦值 | x |= y |
| 2 | ^= | 按位異或賦值 | x ^= y |
| 2 | &&= | 邏輯與賦值 | x &&= y |
| 2 | ||= | 邏輯或賦值 | x ||= y |
| 2 | => | 箭頭 | x => y |
| 2 | yield | 暫停/繼續 | yield x |
| 2 | yield* | 委託 | yield* x |
| 2 | ... | 展開 | ... x |
| 1 | , | 逗號 | x , y |