ECMAScript JavaScript JScript ActionScript 运算符优先级

ECMAScript JavaScript JScript ActionScript 运算符优先级

MDN Web Docs

运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行。
JavaScript Demo: Expressions - Operator precedence

console.log(3 + 4 * 5); // 3 + 20
// expected output: 23

console.log(4 * 3 ** 2); // 4 * 9
// expected output: 36

let a;
let b;

console.log(a = b = 5);
// expected output: 5

关联性

关联性决定了拥有相同优先级的运算符的执行顺序。考虑下面这个表达式:
a OP b OP c;

左关联(左到右)相当于把左边的子表达式加上小括号(a OP b) OP c,右关联(右到左)相当于a OP (b OP c)。赋值运算符是右关联的,所以你可以这么写:

a = b = 5; 

结果 a 和 b 的值都会成为5。这是因为赋值运算符的返回结果就是赋值运算符右边的那个值,具体过程是:b被赋值为5,然后a也被赋值为 b=5 的返回值,也就是5。

示例

3 > 2 && 2 > 1
// return true

3 > 2 > 1
// 返回 false,因为 3 > 2 是 true,并且 true > 1 is false
// 加括号可以更清楚:(3 > 2) > 1

汇总表

下面的表将所有运算符按照优先级的不同从高(20)到低(1)排列。

优先级运算类型关联性运算符
21圆括号n/a 不相关( … )
20成员访问从左到右… . …
需计算的成员访问从左到右… [ … ]
new (带参数列表)n/anew … ( … )
函数调用从左到右… ( … )
可选链(Optional chaining)(ts 以支持,es 草案)从左到右 ?.
19new (无参数列表) 从右到左 new …
18 后置递增(运算符在后)n/a … ++
后置递减(运算符在后) … --
17 逻辑非从右到左 ! …
按位非 ~ …
一元加法+ …
一元减法 - …
前置递增 ++ …
前置递减 -- …
typeof typeof …
void void …
delete delete …
await await …
16从右到左 … ** …
15乘法 从左到右 … * …
除法… / …
取模… % …
14加法 从左到右 … + …
减法… - …
13按位左移 从左到右 … << …
按位右移… >> …
无符号右移… >>> …
12小于 从左到右 … < …
小于等于… <= …
大于… > …
大于等于… >= …
in… in …
instanceof… instanceof …
11等号 从左到右 … == …
非等号… != …
全等号… === …
非全等号… !== …
10按位与 从左到右… & …
9按位异或 从左到右 … ^ …
8按位或 从左到右 … | …
7逻辑与 从左到右 … && …
6 逻辑或 从左到右 … || …
5空值合并 从左到右 … ?? …
4条件运算符 从右到左 … ? … : …
3 赋值从右到左 … = …
… += …
… -= …
… **= …
… *= …
… /= …
… %= …
… <<= …
… >>= …
… >>>= …
… &= …
… ^= …
… |= …
… &&= …
… ||= …
… ??= …
2 yield 从右到左 yield …
yield*yield* …
1展开运算符 n/a (不相关)... …
0逗号 从左到右 … , …
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值