js运算符优先级
汇总表
下面的表将所有运算符按照优先级的不同从高到低排列。
优先级 |
运算类型 |
关联性 |
运算符 |
20 |
圆括号 |
n/a |
( … ) |
19 |
成员访问 |
从左到右 |
… . … |
|
需计算的成员访问 |
从左到右 |
… [ … ] |
|
new (带参数列表) |
n/a |
new … ( … ) |
|
函数调用 |
从左到右 |
… ( … ) |
18 |
new (无参数列表) |
从右到左 |
new … |
17 |
后置递增(运算符在后) |
n/a |
… ++ |
|
后置递减(运算符在后) |
n/a |
… -- |
16 |
逻辑非 |
从右到左 |
! … |
|
按位非 |
|
~ … |
|
一元加法 |
|
+ … |
|
一元减法 |
|
- … |
|
前置递增 |
|
++ … |
|
前置递减 |
|
-- … |
|
typeof |
|
typeof … |
|
void |
|
void … |
|
delete |
|
delete … |
|
await |
|
await … |
15 |
幂 |
从右到左 |
… ** … |
14 |
乘法 |
从左到右 |
… * … |
|
除法 |
|
… / … |
|
取模 |
|
… % … |
13 |
加法 |
从左到右 |
… + … |
|
减法 |
|
… - … |
12 |
按位左移 |
从左到右 |
… << … |
|
按位右移 |
|
… >> … |
|
无符号右移 |
|
… >>> … |
11 |
小于 |
从左到右 |
… < … |
|
小于等于 |
|
… <= … |
|
大于 |
|
… > … |
|
大于等于 |
|
… >= … |
|
in |
|
… in … |
|
instanceof |
|
… instanceof … |
10 |
等号 |
从左到右 |
… == … |
|
非等号 |
|
… != … |
|
全等号 |
|
… === … |
|
非全等号 |
|
… !== … |
9 |
按位与 |
从左到右 |
… & … |
8 |
按位异或 |
从左到右 |
… ^ … |
7 |
按位或 |
从左到右 |
… | … |
6 |
逻辑与 |
从左到右 |
… && … |
5 |
逻辑或 |
从左到右 |
… || … |
4 |
条件运算符 |
从右到左 |
… ? … : … |
3 |
赋值 |
从右到左 |
…=… |
|
|
|
+= … |
|
|
|
-= … |
|
|
|
*= … |
|
|
|
/= … |
|
|
|
%= … |
|
|
|
<<= … |
|
|
|
>>= … |
|
|
|
>>>= … |
|
|
|
&= … |
|
|
|
^= … |
|
|
|
|= … |
2 |
yield |
从右到左 |
yield … |
|
yield* |
|
yield* … |
1 |
展开运算符 |
n/a |
... … |
0 |
逗号 |
从左到右 |
… , … |
思考
1 2 3 4 5 6 7 8
| let testVal = 1;
console.log(true || testVal++ && false); console.log(testVal);
let testVal2 = 1; console.log(false && testVal2++ || true); console.log(testVal2);
|
文档
Author
My name is Micheal Wayne and this is my blog.
I am a front-end software engineer.
Contact: michealwayne@163.com