éç®ååªå åº
éç®ååªå åºï¼Operator precedenceï¼æ±ºå®äºéç®åå½¼æ¤ä¹éè¢«èªæ³è§£æçæ¹å¼ï¼åªå åºè¼é«çéç®åææçºåªå åºè¼ä½éç®åçéç®å ï¼operandsï¼ã
å試ä¸ä¸
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
ç¸ä¾æ§(Associativity)
ç¶åªå åºç¸åæï¼ä½¿ç¨ç¸ä¾æ§æ±ºå®éç®æ¹åãç¯ä¾å¦ä¸ï¼
a OP b OP c
å·¦ç¸ä¾æ§ (Left-associativity) ï¼è¡¨ç¤ºèçé åºçºå¾å·¦è³å³ (a OP b) OP cï¼åä¹ï¼å³ç¸ä¾æ§(right-associativity) 表示èçé åºçºå¾å³è³å·¦ a OP (b OP c)ã賦å¼éç®ç¬¦ (Assignment operators) çºå³ç¸ä¾æ§ï¼ç¯ä¾å¦ä¸ï¼
a = b = 5;
a å b çé æçµæçº 5ï¼å çºè³¦å¼éç®ç¬¦ (Assignment operator) çºå³ç¸ä¾æ§ï¼å æ¤å¾å³è³å·¦è¿åå¼ãä¸éå§ b 被è¨å®çº 5ï¼æ¥è a ä¹è¢«è¨å®çº 5ã
è¡¨æ ¼(Table)
䏿¹è¡¨æ ¼ååºéç®åçç¸ä¾æ§ï¼å¾é« (19) å°ä½ (1)ã
| åªå
æ§ Precedence |
éç®åå稱 Operator type |
ç¸ä¾æ§ Associativity |
éç®å Individual operators |
|---|---|---|---|
| 19 | Grouping | ç¡ | ( ⦠) |
| 18 | Member Access | å¾å·¦è³å³ | ⦠. ⦠|
| Computed Member Access | å¾å·¦è³å³ | ⦠[ ⦠] |
|
new (with argument list) |
ç¡ | new ⦠( ⦠) |
|
| å¼å«å½å¼ | å¾å·¦è³å³ |
⦠( ⦠)
|
|
| å¯é¸ä¸²é£ï¼Optional chainingï¼ | å¾å·¦è³å³ | ?. |
|
| 17 |
new (without argument list)
|
å¾å³è³å·¦ | new ⦠|
| 16 | åå°¾éå¢ | ç¡ | ⦠++ |
| å尾鿏 | ⦠-- |
||
| 15 | Logical NOT | å¾å³è³å·¦ | ! ⦠|
| Bitwise NOT | ~ ⦠|
||
| Unary Plus | + ⦠|
||
| Unary Negation | - ⦠|
||
| åé¦éå¢ | ++ ⦠|
||
| åé¦éæ¸ | -- ⦠|
||
typeof |
typeof ⦠|
||
void |
void ⦠|
||
delete |
delete ⦠|
||
await |
await ⦠|
||
| 14 | Exponentiation | å¾å³è³å·¦ | ⦠** ⦠|
| 13 | Multiplication | å¾å·¦è³å³ | ⦠* ⦠|
| Division | ⦠/ ⦠|
||
| Remainder | ⦠% ⦠|
||
| 12 | Addition | å¾å·¦è³å³ | ⦠+ ⦠|
| Subtraction | ⦠- ⦠|
||
| 11 | Bitwise Left Shift | å¾å·¦è³å³ | ⦠<< ⦠|
| Bitwise Right Shift | ⦠>> ⦠|
||
| Bitwise Unsigned Right Shift | ⦠>>> ⦠|
||
| 10 | Less Than | å¾å·¦è³å³ | ⦠< ⦠|
| Less Than Or Equal | ⦠<= ⦠|
||
| Greater Than | ⦠> ⦠|
||
| Greater Than Or Equal | ⦠>= ⦠|
||
in |
⦠in ⦠|
||
instanceof |
⦠instanceof ⦠|
||
| 9 | Equality | å¾å·¦è³å³ | ⦠== ⦠|
| Inequality | ⦠!= ⦠|
||
| Strict Equality | ⦠=== ⦠|
||
| Strict Inequality | ⦠!== ⦠|
||
| 8 | Bitwise AND | å¾å·¦è³å³ | ⦠& ⦠|
| 7 | Bitwise XOR | å¾å·¦è³å³ | ⦠^ ⦠|
| 6 | Bitwise OR | å¾å·¦è³å³ | ⦠| ⦠|
| 5 | Logical AND | å¾å·¦è³å³ | ⦠&& ⦠|
| 4 | Logical OR | å¾å·¦è³å³ | ⦠|| ⦠|
| Nullish Coalescing | å¾å·¦è³å³ | ⦠?? ⦠|
|
| 3 | æ¢ä»¶éç® | å¾å³è³å·¦ | ⦠? ⦠: ⦠|
| 2 | è³¦å¼ | å¾å³è³å·¦ | ⦠= ⦠|
⦠+= ⦠|
|||
⦠-= ⦠|
|||
⦠**= ⦠|
|||
⦠*= ⦠|
|||
⦠/= ⦠|
|||
⦠%= ⦠|
|||
⦠<<= ⦠|
|||
⦠>>= ⦠|
|||
⦠>>>= ⦠|
|||
⦠&= ⦠|
|||
⦠^= ⦠|
|||
⦠|= ⦠|
|||
⦠&&= ⦠|
|||
⦠||= ⦠|
|||
⦠??= ⦠|
|||
| 1 | Comma / Sequence | å¾å·¦è³å³ | ⦠, ⦠|