è¿ç®ç¬¦ä¼å 级
è¿ç®ç¬¦çä¼å 级å³å®äºè¡¨è¾¾å¼ä¸è¿ç®æ§è¡çå å顺åºãä¼å 级é«çè¿ç®ç¬¦ä¼ä½ä¸ºä¼å 级ä½çè¿ç®ç¬¦çæä½æ°ã
å°è¯ä¸ä¸
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
ä¼å 级åç»åæ§
èèç±ä¸é¢çè¡¨ç¤ºæ³æè¿°ç表达å¼ãå ¶ä¸ï¼OP1 å OP2 齿¯æä½ç¬¦çå ä½ç¬¦ã
a OP1 b OP2 c
妿 OP1 å OP2 å
·æä¸åçä¼å
级ï¼è§ä¸è¡¨ï¼ï¼åä¼å
级æé«çè¿ç®ç¬¦å
æ§è¡ï¼ä¸ç¨èèç»åæ§ãè§å¯ä¹æ³å¦ä½å
·ææ¯å æ³æ´é«çä¼å
级并é¦å
æ§è¡ï¼å³ä½¿å æ³æ¯é¦å
åå
¥ä»£ç çã
console.log(3 + 10 * 2); // è¾åº 23
console.log(3 + (10 * 2)); // è¾åº 23 å 为è¿éçæ¬å·æ¯å¤ä½ç
console.log((3 + 10) * 2); // è¾åº 26 å 为æ¬å·æ¹åäºä¼å
级
å·¦ç»åï¼å·¦å°å³ï¼ç¸å½äºæå·¦è¾¹çå表达å¼å ä¸å°æ¬å· (a OP b) OP cï¼å³ç»åï¼å³å°å·¦ï¼ç¸å½äº a OP (b OP c)ãèµå¼è¿ç®ç¬¦æ¯å³ç»åçï¼æä»¥ä½ å¯ä»¥è¿ä¹åï¼
a = b = 5; // ç¸å½äº a = (b = 5);
é¢æç»ææ¯ a å b çå¼é½ä¼æä¸º 5ãè¿æ¯å 为èµå¼è¿ç®ç¬¦çè¿åç»æå°±æ¯èµå¼è¿ç®ç¬¦å³è¾¹çé£ä¸ªå¼ï¼å
·ä½è¿ç¨æ¯ï¼é¦å
b 被èµå¼ä¸º 5ï¼ç¶å a ä¹è¢«èµå¼ä¸º b = 5 çè¿åå¼ï¼ä¹å°±æ¯ 5ã
å¦ä¸ä¸ªä¾åæ¯ï¼åªæå¹è¿ç®ç¬¦æ¯å³ç»åçï¼èå ¶ä»ç®æ¯è¿ç®ç¬¦é½æ¯å·¦ç»åçãæè¶£çæ¯ï¼æ 论ç»åæ§åä¼å 级å¦ä½ï¼æ±å¼é¡ºåºæ»æ¯ä»å·¦å°å³ã
| 代ç | è¾åº |
|
js |
Evaluating the left side Evaluating the right side 3 |
|
js |
Evaluating the left side Evaluating the right side 8 |
彿å¤ä¸ªå ·æç¸åä¼å 级çè¿ç®ç¬¦æ¶ï¼ç»åæ§çå·®å¼å°±ä¼åæ¥ä½ç¨ãä» ä½¿ç¨ä¸ä¸ªæå¤ä¸ªä¸åä¼å 级çè¿ç®ç¬¦æ¶ï¼ç»åæ§ä¸ä¼å½±åè¾åºï¼å¦ä¸é¢çä¾åæç¤ºãå¨ä¸é¢ç示ä¾ä¸ï¼è§å¯ä½¿ç¨å¤ä¸ªç¸åè¿ç®ç¬¦æ¶ç»åæ§ä¼å¦ä½å½±åè¾åºã
| 代ç | è¾åº |
|
js |
Evaluating the left side Evaluating the middle side Evaluating the right side 1 |
|
js |
Evaluating the left side Evaluating the middle side Evaluating the right side 512 |
|
js |
Evaluating the left side Evaluating the middle side Evaluating the right side 64 |
è§å¯ä¸é¢ç代ç çæ®µï¼6 / 3 / 2 ä¸ (6 / 3) / 2 æ¯ç¸åçï¼å ä¸ºé¤æ³æ¯å·¦ç»åçãèå¹è¿ç®ç¬¦æ¯å³ç»åçï¼æä»¥ 2 ** 3 ** 2 ä¸ 2 ** (3 ** 2) æ¯ç¸åçãå æ¤ï¼(2 ** 3) ** 2 伿´æ¹æ§è¡é¡ºåºï¼å¹¶å¯¼è´è¾åºä¸è¡¨ä¸ç 64ã
请记ä½ï¼å¤ææ§è¡é¡ºåºçæ¶åï¼ä¼å
级å¨ç»åæ§ä¹åãæä»¥ï¼æ··åæ±é¤æ³å广¶ï¼æ±å¹ä¼å
äºé¤æ³ãä¾å¦ï¼2 ** 3 / 3 ** 2 çç»ææ¯ 0.8888888888888888ï¼å 为å®ç¸å½äº (2 ** 3) / (3 ** 2)ã
åç»åçè·¯çæ³¨æäºé¡¹
å¨ä¸è¡¨ä¸ï¼åç»ï¼Groupingï¼ å
·ææé«ä¼å
级ãç¶èï¼è¿å¹¶ä¸æå³çæ»æ¯ä¼å
对åç»ç¬¦å· ( ⦠) å
ç表达å¼è¿è¡æ±å¼ï¼å°¤å
¶æ¯æ¶åçè·¯æ¶ã
çè·¯æ¯æ¡ä»¶æ±å¼çæ¯è¯ãä¾å¦ï¼å¨è¡¨è¾¾å¼ a && (b + c) ä¸ï¼å¦æ a 为èå¼ï¼falsyï¼ï¼é£ä¹å³ä½¿ (b + c) å¨åæ¬å·ä¸ï¼ä¹ä¸ä¼è¢«æ±å¼ãæä»¬å¯ä»¥è¯´é»è¾æè¿ç®ç¬¦ï¼âORâï¼æ¯âçè·¯çâãé¤äºé»è¾æè¿ç®ç¬¦å¤ï¼å
¶ä»çè·¯è¿ç®ç¬¦è¿å
æ¬é»è¾ä¸ï¼âANDâï¼ã空å¼åå¹¶ãå¯éé¾åæ¡ä»¶ï¼ä¸å
ï¼è¿ç®ç¬¦ãä¸é¢ææ´å¤ä¾åï¼
a || b * c; // é¦å
对 `a` æ±å¼ï¼å¦æ `a` 为çå¼åç´æ¥è¿å `a`
a && b < c; // é¦å
对 `a` æ±å¼ï¼å¦æ `a` 为èå¼åç´æ¥è¿å `a`
a ?? (b || c); // é¦å
对 `a` æ±å¼ï¼å¦æ `a` 䏿¯ `null` æ `undefined` åç´æ¥è¿å `a`
a?.b.c; // é¦å
对 `a` æ±å¼ï¼å¦æ `a` æ¯ `null` æ `undefined` åç´æ¥è¿å `undefined`
示ä¾
3 > 2 && 2 > 1;
// è¿å true
3 > 2 > 1;
// è¿å falseï¼å 为 3 > 2 æ¯ trueï¼ç¶å true ä¼å¨æ¯è¾è¿ç®ç¬¦ä¸
// 被éå¼è½¬æ¢ä¸º 1ï¼å æ¤ true > 1 ä¼å为 1 > 1ï¼ç»ææ¯ false
// å æ¬å·å¯ä»¥æ´æ¸
æ¥ï¼(3 > 2) > 1
æ±æ»è¡¨
ä¸é¢çè¡¨æ ¼å°ææè¿ç®ç¬¦æç §ä¼å 级çä¸åä»é«ï¼19ï¼å°ä½ï¼1ï¼æåã
请注æï¼ä¸è¡¨ä¸æ æä¸å å«å±å¼è¯æ³ââåå å¯ä»¥å¼ç¨ Stack Overflow ä¸çä¸ä¸ªåçï¼âå±å¼è¯æ³ä¸æ¯ä¸ä¸ªè¿ç®ç¬¦ï¼å æ¤æ²¡æä¼å 级ã宿¯æ°ç»åé¢éå彿°è°ç¨ï¼å对象åé¢éï¼è¯æ³çä¸é¨åãâ
| ä¼å 级 | è¿ç®ç¬¦ç±»å | ç»åæ§ | è¿ç®ç¬¦ |
|---|---|---|---|
| 19 | åç» | n/aï¼ä¸ç¸å ³ï¼ | ( ⦠) |
| 18 | æåè®¿é® | ä»å·¦å°å³ | ⦠. ⦠|
| é计ç®çæåè®¿é® | ä»å·¦å°å³ | ⦠[ ⦠] |
|
newï¼å¸¦åæ°åè¡¨ï¼ |
n/a | new ⦠( ⦠) |
|
| 彿°è°ç¨ | ä»å·¦å°å³ | ⦠( ⦠) |
|
| å¯éé¾ï¼Optional chainingï¼ | ä»å·¦å°å³ | ?. |
|
| 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 | éå· / åºå | ä»å·¦å°å³ | ⦠, ⦠|