[JS] Summary of operator precedence

Article directory

  1. If OP1 and OP2 have different precedence (see table below), the operator with the highest precedence is executed first, regardless of associativity.
console.log(3 + 10 * 2); // 输出 23
console.log((3 + 10) * 2); // 输出 26 因为括号改变了优先级
  1. Associativity is considered if OP1 and OP2 have the same priority.
    • Left associative (left to right) is equivalent to adding parentheses to the left subexpression (a OP b) OP c
    • Right associative (right to left) is equivalent to a OP (b OP c)
// 赋值运算符是右结合的:
a = b = 5; // 相当于 a = (b = 5);
  • The table below ranks all operators in order of precedence from highest (19) to lowest (1).
priority operator type Combination operator
19 group n/a (not relevant) ()
ditto member access from left to right .
ditto Calculated member access ditto ...
ditto function call ditto fun()
ditto Optional chaining ditto ?.
ditto new (with parameter list) n/a new
17 new (no argument list) from right to left new
16 post-increment n/a ++
ditto post-decrement ditto --
15 logical NOT(!) from right to left !
ditto bitwise NOT (~) ditto ~
ditto Unary addition (+) ditto +
ditto unary subtraction (-) ditto -
ditto Pre-increment ditto ++
ditto pre-decrement ditto --
ditto typeof ditto typeof
ditto void ditto void
ditto delete ditto delete
ditto await ditto await
14 power(**) from right to left **
13 multiplication(*) from left to right *
ditto division(/) ditto /
ditto Surplus(%) ditto %
12 Addition (+) from left to right +
ditto Subtraction (-) ditto -
11 Bitwise left shift (<<) from left to right <<
ditto Bitwise right shift (>>) ditto >>
ditto Unsigned right shift (>>>) ditto >>>
10 less than (<) from left to right <
ditto less than or equal to (<=) ditto <=
ditto greater than (>) ditto >
ditto greater than or equal to (>=) ditto >=
ditto in ditto in
ditto instanceof … ditto instanceof
9 equal (==) from left to right ==
ditto not equal (!=) ditto !=
ditto Consistent/strict equality (===) ditto ===
ditto inconsistent/strictly not equal (!==) ditto !==
8 bitwise AND (&) from left to right &
7 Bitwise XOR (^) from left to right ^
6 bitwise or (|) from left to right |
5 logical AND (&&) from left to right &&
4 Logical OR (||) from left to right ||
ditto Null coalescing (??) from left to right ??
3 Conditional (ternary) operator from right to left ? … :
2 assignment from right to left =
ditto ditto ditto +=
ditto ditto ditto -=
ditto ditto ditto **=
ditto ditto ditto *=
ditto ditto ditto /=
ditto ditto ditto %=
ditto ditto ditto <<=
ditto ditto ditto >>=
ditto ditto ditto >>>=
ditto ditto ditto &=
ditto ditto ditto ^=
ditto ditto ditto |=
ditto ditto ditto &&=
ditto ditto ditto ||=.
ditto ditto ditto ??=
1 comma/ sequence from left to right ,

Guess you like

Origin blog.csdn.net/qq_45677671/article/details/132067066