【JS】运算符优先级汇总

文章目录

  1. 如果 OP1 和 OP2 具有不同的优先级(见下表),则优先级最高的运算符先执行,不用考虑结合性。
console.log(3 + 10 * 2); // 输出 23
console.log((3 + 10) * 2); // 输出 26 因为括号改变了优先级
  1. 如果 OP1 和 OP2 具有相同的优先级,则需考虑结合性。
    • 左结合(左到右)相当于把左边的子表达式加上小括号 (a OP b) OP c
    • 右结合(右到左)相当于 a OP (b OP c)
// 赋值运算符是右结合的:
a = b = 5; // 相当于 a = (b = 5);
  • 下面的表格将所有运算符按照优先级的不同从高(19)到低(1)排列。
优先级 运算符类型 结合性 运算符
19 分组 n/a(不相关) ()
同上 成员访问 从左到右 .
同上 需计算的成员访问 同上 ...
同上 函数调用 同上 fun()
同上 可选链(Optional chaining) 同上 ?.
同上 new(带参数列表) n/a new
17 new(无参数列表) 从右到左 new
16 后置递增 n/a ++
同上 后置递减 同上 --
15 逻辑非 (!) 从右到左 !
同上 按位非 (~) 同上 ~
同上 一元加法 (+) 同上 +
同上 一元减法 (-) 同上 -
同上 前置递增 同上 ++
同上 前置递减 同上 --
同上 typeof 同上 typeof
同上 void 同上 void
同上 delete 同上 delete
同上 await 同上 await
14 幂 (**) 从右到左 **
13 乘法 (*) 从左到右 *
同上 除法 (/) 同上 /
同上 取余 (%) 同上 %
12 加法 (+) 从左到右 +
同上 减法 (-) 同上 -
11 按位左移 (<<) 从左到右 <<
同上 按位右移 (>>) 同上 >>
同上 无符号右移 (>>>) 同上 >>>
10 小于 (<) 从左到右 <
同上 小于等于 (<=) 同上 <=
同上 大于 (>) 同上 >
同上 大于等于 (>=) 同上 >=
同上 in 同上 in
同上 instanceof … 同上 instanceof
9 相等 (==) 从左到右 ==
同上 不相等 (!=) 同上 !=
同上 一致/严格相等 (===) 同上 ===
同上 不一致/严格不相等 (!==) 同上 !==
8 按位与 (&) 从左到右 &
7 按位异或 (^) 从左到右 ^
6 按位或 (|) 从左到右 |
5 逻辑与 (&&) 从左到右 &&
4 逻辑或 (||) 从左到右 ||
同上 空值合并 (??) 从左到右 ??
3 条件(三元)运算符 从右到左 ? … :
2 赋值 从右到左 =
同上 同上 同上 +=
同上 同上 同上 -=
同上 同上 同上 **=
同上 同上 同上 *=
同上 同上 同上 /=
同上 同上 同上 %=
同上 同上 同上 <<=
同上 同上 同上 >>=
同上 同上 同上 >>>=
同上 同上 同上 &=
同上 同上 同上 ^=
同上 同上 同上 |=
同上 同上 同上 &&=
同上 同上 同上 ||=.
同上 同上 同上 ??=
1 逗号 / 序列 从左到右 ,

猜你喜欢

转载自blog.csdn.net/qq_45677671/article/details/132067066