ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов
ÐÑиоÑиÑÐµÑ Ð¾Ð¿ÐµÑаÑоÑов опÑеделÑÐµÑ Ð¿Ð¾ÑÑдок, в коÑоÑом опеÑаÑоÑÑ Ð²ÑполнÑÑÑÑÑ. ÐпеÑаÑоÑÑ Ñ Ð±Ð¾Ð»ÐµÐµ вÑÑоким пÑиоÑиÑеÑом вÑполнÑÑÑÑÑ Ð¿ÐµÑвÑми.
ÐнÑеÑакÑивнÑй пÑимеÑ
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.
ÐÑимеÑÑ
3 > 2 && 2 > 1;
// веÑнÑÑ true
3 > 2 > 1;
// веÑнÑÑ false, поÑÐ¾Ð¼Ñ ÑÑо 3 > 2 возвÑаÑÐ°ÐµÑ true, в ÑÐ²Ð¾Ñ Ð¾ÑеÑÐµÐ´Ñ true > 1 веÑнÑÑ false
// Ðобавление Ñкобок знаÑиÑелÑно повÑÑÐ°ÐµÑ ÑиÑаемоÑÑÑ Ð²ÑÑажениÑ: (3 > 2) > 1
ТаблиÑа
ÐпеÑаÑоÑÑ ÑпоÑÑдоÑÐµÐ½Ñ Ñ Ñамого вÑÑокого (18) до Ñамого низкого (1) пÑиоÑиÑеÑа.
ÐбÑаÑиÑе внимание, ÑÑо spread-опеÑаÑÐ¾Ñ (...) намеÑенно не вклÑÑен в ÑаблиÑÑ, поÑÐ¾Ð¼Ñ ÑÑо он вообÑе не ÑвлÑеÑÑÑ Ð¾Ð¿ÐµÑаÑоÑом и пÑавилÑно говоÑиÑÑ spread-ÑинÑакÑиÑ. ÐодÑобнее можно поÑиÑаÑÑ Ð² оÑвеÑе на Stack Overflow (en).
| ÐÑиоÑиÑÐµÑ | Тип опеÑаÑоÑа | ÐÑÑоÑиаÑивноÑÑÑ | ÐонкÑеÑнÑе опеÑаÑоÑÑ |
|---|---|---|---|
| 18 | ÐÑÑппиÑовка |
не опÑеделено | ( ⦠) |
| 17 | ÐоÑÑÑп к ÑвойÑÑвам |
Ñлева напÑаво | ⦠. ⦠|
ÐоÑÑÑп к ÑвойÑÑвам Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑÑÑ Ð²ÑÑиÑÐ»ÐµÐ½Ð¸Ñ |
⦠[ ⦠] |
||
new (Ñо ÑпиÑком аÑгÑменÑов) |
не опÑеделено | new ⦠( ⦠) |
|
| ÐÑзов ÑÑнкÑии | Ñлева напÑаво | ⦠( ⦠) |
|
| ÐпеÑаÑÐ¾Ñ Ð¾Ð¿ÑионалÑной поÑледоваÑелÑноÑÑи (?.) | ?. |
||
| 16 | new (без ÑпиÑка аÑгÑменÑов) |
ÑпÑава налево | new ⦠|
| 15 | ÐоÑÑÑикÑнÑй инкÑÐµÐ¼ÐµÐ½Ñ |
не опÑеделено | ⦠++ |
ÐоÑÑÑикÑнÑй декÑÐµÐ¼ÐµÐ½Ñ |
⦠-- |
||
| 14 | ÐогиÑеÑкое оÑÑиÑание (!) | ÑпÑава налево | ! ⦠|
| ÐобиÑовое оÑÑиÑание (~) | ~ ⦠|
||
| УнаÑнÑй плÑÑ | + ⦠|
||
| УнаÑнÑй минÑÑ | - ⦠|
||
| ÐÑеÑикÑнÑй инкÑÐµÐ¼ÐµÐ½Ñ | ++ ⦠|
||
| ÐÑеÑикÑнÑй декÑÐµÐ¼ÐµÐ½Ñ | -- ⦠|
||
| typeof | typeof ⦠|
||
| void | void ⦠|
||
| delete | delete ⦠|
||
| await | await ⦠|
||
| 13 | Ðозведение в ÑÑÐµÐ¿ÐµÐ½Ñ (**) | ÑпÑава налево | ⦠** ⦠|
| 12 | Умножение (*) | Ñлева напÑаво | ⦠* ⦠|
| Ðеление (/) | ⦠/ ⦠|
||
| ÐÑÑаÑок Ð¾Ñ Ð´ÐµÐ»ÐµÐ½Ð¸Ñ (%) | ⦠% ⦠|
||
| 11 | Сложение (+) | Ñлева напÑаво | ⦠+ ⦠|
| ÐÑÑиÑание (-) | ⦠- ⦠|
||
| 10 | ÐобиÑовÑй Ñдвиг влево (<<) | Ñлева напÑаво | ⦠<< ⦠|
| ÐобиÑовÑй Ñдвиг впÑаво (>>) | ⦠>> ⦠|
||
| Сдвиг впÑаво Ñ Ð·Ð°Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸ÐµÐ¼ нÑлей (>>>) | ⦠>>> ⦠|
||
| 9 | ÐенÑÑе (<) | Ñлева напÑаво | ⦠< ⦠|
| ÐенÑÑе или Ñавно (<=) | ⦠<= ⦠|
||
| ÐолÑÑе (>) | ⦠> ⦠|
||
| ÐолÑÑе или Ñавно (>=) | ⦠>= ⦠|
||
| in | ⦠in ⦠|
||
| instanceof | ⦠instanceof ⦠|
||
| 8 | РавенÑÑво (==) | Ñлева напÑаво | ⦠== ⦠|
| ÐеÑавенÑÑво (!=) | ⦠!= ⦠|
||
| СÑÑогое ÑавенÑÑво (===) | ⦠=== ⦠|
||
| СÑÑогое неÑавенÑÑво (!==) | ⦠!== ⦠|
||
| 7 | ÐобиÑовое «Ð» (&) | Ñлева напÑаво | ⦠& ⦠|
| 6 | ÐобиÑовое иÑклÑÑаÑÑее «ÐÐл (^) | Ñлева напÑаво | ⦠^ ⦠|
| 5 | ÐобиÑовое «ÐÐл (|) | Ñлева напÑаво | ⦠| ⦠|
| 4 | ÐогиÑеÑкое «Ð» (&&) | Ñлева напÑаво | ⦠&& ⦠|
| 3 | ÐогиÑеÑкое «ÐÐл (||) | Ñлева напÑаво | ⦠|| ⦠|
| ÐпеÑаÑÐ¾Ñ Ð½Ñлевого ÑлиÑÐ½Ð¸Ñ (??) | ⦠?? ⦠|
||
| 2 | ÐÑиÑваивание | ÑпÑава налево | ⦠= ⦠|
⦠+= ⦠|
|||
⦠-= ⦠|
|||
⦠**= ⦠|
|||
⦠*= ⦠|
|||
⦠/= ⦠|
|||
⦠%= ⦠|
|||
⦠<<= ⦠|
|||
⦠>>= ⦠|
|||
⦠>>>= ⦠|
|||
⦠&= ⦠|
|||
⦠^= ⦠|
|||
⦠|= ⦠|
|||
⦠&&= ⦠|
|||
⦠||= ⦠|
|||
⦠??= ⦠|
|||
| УÑловнÑй (ÑеÑнаÑнÑй) опеÑаÑÐ¾Ñ | ÑпÑава налево | ⦠? ⦠: ⦠|
|
| yield | ÑпÑава налево | yield ⦠|
|
| yield* | yield* ⦠|
||
| 1 | ÐапÑÑÐ°Ñ / ÐоÑледоваÑелÑноÑÑÑ | Ñлева напÑаво | ⦠, ⦠|