運算符優(yōu)先級確定彼此之間解析運算符的方式。
具有較高優(yōu)先級的運算符將成為具有較低優(yōu)先級的運算符的操作數(shù)。
在下面的示例中,乘法的優(yōu)先級高于加法,這決定了運算的結(jié)果。
// 首先將3乘以5,然后加10 var x = 10 + 3 * 5;測試看看?/?
相反,如果我們想首先運行加法運算,則應將其分組在括號中,該括號始終具有最高優(yōu)先級。
// 首先將10和3相加,然后乘以5 var x = (10 + 3) * 5;測試看看?/?
使用括號時,首先要計算括號內(nèi)的運算。
當許多運算具有相同的優(yōu)先級(例如加法和減法)時,它們是從左到右計算的:
var x = 10 + 3 - 5;測試看看?/?
表達式求值也受操作符結(jié)合性的影響。
結(jié)合性是指整個表達式求值的方向(從右到左或從左到右)。
如果一個表達式中出現(xiàn)兩個或多個具有相同優(yōu)先級的操作符,那么將首先計算哪個操作符?算子結(jié)合性回答了這個問題。
請參考下表以解決JavaScript中的任何關(guān)聯(lián)或優(yōu)先級問題
| 運算符 | 使用描述 | 運算符結(jié)合 | 運算符優(yōu)先級 |
|---|---|---|---|
| () | 方法/功能調(diào)用,分組 | 左到右 | 最高- 1 |
| [] | 陣列存取 | 左到右 | 1 |
| . | 對象屬性訪問 | 左到右 | 1 |
| ++ | 自增 | 右到左 | 2 |
| -- | 自減 | 右到左 | 2 |
| - | 減法 | 右到左 | 2 |
| ! | 邏輯非 | 右到左 | 2 |
| ~ | 按位非 | 右到左 | 2 |
| delete | 刪除數(shù)組值或?qū)ο髮傩?/td> | 右到左 | 2 |
| new | 創(chuàng)建一個對象 | 右到左 | 2 |
| typeof | 返回數(shù)據(jù)類型 | 右到左 | 2 |
| void | 不指定要返回的值 | 右到左 | 2 |
| / | 除法 | 左到右 | 3 |
| * | 乘法 | 左到右 | 3 |
| % | 求模 | 左到右 | 3 |
| + | 加法 | 左到右 | 4 |
| + | 字符串拼接 | 左到右 | 4 |
| - | 減法 | 左到右 | 4 |
| >> | 按位右移 | 左到右 | 5 |
| << | 按位左移 | 左到右 | 5 |
| >, >= | 大于,大于或等于 | 左到右 | 6 |
| <, <= | 小于,小于或等于 | 左到右 | 6 |
| == | 相等 | 左到右 | 7 |
| != | 不等 | 左到右 | 7 |
| === | 一致/嚴格相等(相同的數(shù)據(jù)類型) | 左到右 | 7 |
| !== | 不一致/嚴格不相等(不相同的數(shù)據(jù)類型) | 左到右 | 7 |
| & | 按位與 | 左到右 | 8 |
| ^ | 按位異或 | 左到右 | 9 |
| | | 按位或 | 左到右 | 10 |
| && | 邏輯與 | 左到右 | 11 |
| || | 邏輯或 | 左到右 | 12 |
| ?: | 條件分支 | 左到右 | 13 |
| = | 賦值 | 右到左 | 14 |
| *=, /=, %=, +=,, -=, <<=, >>=, >>>=, &=, ^=, |= | 根據(jù)前面的運算符進行分配 | 右到左 | 14 |
| , | 多重評估 | 左到右 | 最低:15 |