JavaScript 運算符優先級
運算符優先級(Operator Precedence)描述了算術表達式中運算的執行順序。
乘法 (*) 和除法 (/) 的優先級高于加法 (+) 和減法 (-)。
實例
與傳統數學一樣,先進行乘法運算:
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 |
NOT 運算符 |
|||
14 | ! | 邏輯非 | !(x==y) |
14 | ~ | 按位非 | ~x |
一元運算符 |
|||
14 | + | 一元加 | +x |
14 | - | 一元減 | -x |
14 | typeof | 數據類型 | typeof x |
14 | void | 評估空 | void(0) |
14 | delete | 屬性刪除 | delete myCar.color |
算術運算符指數運算在乘法之前執行。 乘法和除法在加法和減法之前執行。 |
|||
13 | ** | 指數運算 ES2016 | 10 ** 2 |
12 | * | 乘 | 10 * 5 |
12 | / | 除 | 10 / 5 |
12 | % | 除法余數 | 10 % 5 |
11 | + | 加 | 10 + 5 |
11 | - | 減 | 10 - 5 |
11 | + | 串聯 | "Bill" + "Gates" |
移位運算符 |
|||
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 | ?? | 空值合并 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 |