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