Skip to content

Commit 9ce45ff

Browse files
authored
Уточнение касательно оператора ","
1 parent 9085b69 commit 9ce45ff

File tree

1 file changed

+11
-2
lines changed

1 file changed

+11
-2
lines changed

1-js/02-first-steps/08-operators/article.md

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -449,12 +449,21 @@ alert( a ); // 7 (результат вычисления 3 + 4)
449449

450450
Первое выражение `1 + 2` выполняется, а результат отбрасывается. Затем идёт `3 + 4`, выражение выполняется и возвращается результат.
451451

452-
```smart header="Запятая имеет очень низкий приоритет"
452+
````smart header="Запятая имеет очень низкий приоритет"
453453
Пожалуйста, обратите внимание, что оператор `,` имеет очень низкий приоритет, ниже `=`, поэтому скобки важны в приведённом выше примере.
454454

455-
Без них в `a = 1 + 2, 3 + 4` сначала выполнится `+`, суммируя числа в `a = 3, 7`, затем оператор присваивания `=` присвоит `a = 3`, а то, что идёт дальше, будет игнорировано. Всё так же, как в `(a = 1 + 2), 3 + 4`.
455+
Попробуйте запустить следующий код (**строгий режим `"use strict"` в примере ниже не используется, иначе мы бы получили ошибку**):
456+
457+
```js run no-strict
458+
a = 1 + 2, 3 + 4;
459+
alert(a); // 3
456460
```
457461

462+
Необычный результат, правда? Особенно учитывая то, что оператор `,` должен «выполнять каждое выражение, но возвращать результат только последнего».
463+
464+
Без скобок в `a = 1 + 2, 3 + 4` сначала выполнится `+`, суммируя числа в `a = 3, 7`, затем оператор присваивания `=` присвоит `a = 3`, а то, что идёт дальше, будет проигнорировано. Всё так же, как в `(a = 1 + 2), 3 + 4`.
465+
````
466+
458467
Зачем нам оператор, который отбрасывает всё, кроме последнего выражения?
459468

460469
Иногда его используют в составе более сложных конструкций, чтобы сделать несколько действий в одной строке.

0 commit comments

Comments
 (0)