Skip to content

Commit b98e7ee

Browse files
authored
Update article.md
1 parent d3c9599 commit b98e7ee

1 file changed

Lines changed: 24 additions & 24 deletions

File tree

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

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ let y = -2;
8585
alert( +y ); // -2
8686
8787
*!*
88-
// Преобразует в числа
88+
// Преобразует не-числа в число
8989
alert( +true ); // 1
9090
alert( +"" ); // 0
9191
*/!*
@@ -127,15 +127,15 @@ alert( +apples + +oranges ); // 5
127127

128128
## Приоритет операторов
129129

130-
В том случае, если в выражении есть несколько операторов – порядок их выполнения определяется *приоритетом*, или, другими словами, существует неявный порядок приоритетов операторов.
130+
В том случае, если в выражении есть несколько операторов – порядок их выполнения определяется *приоритетом*, или, другими словами, существует определённый порядок выполнения операторов.
131131

132-
Из школы мы знаем, что умножение в выражении `2 * 2 + 1` выполнится раньше сложения, т.к. его *приоритет* выше. Говорят, что умножение имеет более высокий *приоритет*, чем сложение.
132+
Из школы мы знаем, что умножение в выражении `2 * 2 + 1` выполнится раньше сложения. Это как раз и есть "приоритет". Говорят, что умножение имеет более высокий приоритет, чем сложение.
133133

134-
Скобки переопределяют любой приоритет, так что если мы не удовлетворены неявным порядком, мы можем использовать их, чтобы изменить приоритет. Например: `(1 + 2) * 2`.
134+
Скобки важнее, чем приоритет, так что если мы не удовлетворены порядком по умолчанию, мы можем использовать их, чтобы изменить приоритет. Например, написать `(1 + 2) * 2`.
135135

136136
В JavaScript много операторов. Каждый оператор имеет соответствующий номер приоритета. Тот, у кого это число больше – выполнится раньше. Если приоритет одинаковый, то порядок выполнения – слева направо.
137137

138-
Отрывок из [таблицы приоритетов](https://developer.mozilla.org/ru/JavaScript/Reference/operators/operator_precedence) (нет необходимости всё запоминать, но помните, что у унарных операторов приоритет выше, чем у бинарных):
138+
Отрывок из [таблицы приоритетов](https://developer.mozilla.org/ru/JavaScript/Reference/operators/operator_precedence) (нет необходимости всё запоминать, обратите внимание, что у унарных операторов приоритет выше, чем у соответствующих бинарных):
139139

140140
| Приоритет | Название | Обозначение |
141141
|------------|------|------|
@@ -181,7 +181,7 @@ alert( c ); // 4
181181
Такое присваивание работает справа-налево. Сначала вычисляется самое правое выражение `2 + 2`, и затем оно присвоится переменным слева: `c`, `b` и `a`. В конце у всех переменных будет одно значение.
182182

183183
````smart header="Оператор `\"=\"` возвращает значение"
184-
Все операторы возвращают значение. Для некоторых это более очевидно, например сложение `+` или умножение `*`. Оператор присваивания не является исключением.
184+
Все операторы возвращают значение. Для некоторых это очевидно, например сложение `+` или умножение `*`. Но и оператор присваивания не является исключением.
185185

186186
Вызов `x = value` записывает `value` в `x` *и возвращает его*.
187187

@@ -199,14 +199,14 @@ alert( a ); // 3
199199
alert( c ); // 0
200200
```
201201

202-
В примере выше результатом `(a = b + 1)` будет значение, которое присваивается в `a` (то есть `3`). Потом оно вычитается от `3`.
202+
В примере выше результатом `(a = b + 1)` будет значение, которое присваивается в `a` (то есть `3`). Потом оно используется для дальнейших вычислений.
203203

204-
Забавное применение присваивания, не так ли? Нам нужно понимать, как это работает, потому что иногда это можно увидеть в сторонних библиотеках, но писать самим в таком стиле не рекомендуется. Такие трюки не сделают ваш код более понятным или читабельным.
204+
Забавное применение присваивания, не так ли? Нам нужно понимать, как это работает, потому что иногда это можно увидеть в JavaScript-библиотеках, но писать самим в таком стиле не рекомендуется. Такие трюки не сделают ваш код более понятным или читабельным.
205205
````
206206

207207
## Остаток от деления %
208208

209-
Оператор взятия остатка `%` интересен тем, что, несмотря на обозначение, никакого отношения к процентам не имеет.
209+
Оператор взятия остатка `%`, несмотря на обозначение, никакого отношения к процентам не имеет..
210210

211211
Его результат `a % b` – это остаток от деления `a` на `b`.
212212

@@ -237,11 +237,11 @@ alert( 2 ** 4 ); // 16 (2 * 2 * 2 * 2)
237237
Например:
238238

239239
```js run
240-
alert( 4 ** (1/2) ); // 2 (степень 1/2 равна квадратному корню)
241-
alert( 8 ** (1/3) ); // 2 (степень 1/3 равна кубическому корю)
240+
alert( 4 ** (1/2) ); // 2 (степень 1/2 эквивалентна взятию квадратного корня)
241+
alert( 8 ** (1/3) ); // 2 (степень 1/3 равна взятию кубического корня)
242242
```
243243

244-
## Инкремент/декремент: ++, --
244+
## Инкремент/декремент
245245

246246
<!-- Can't use -- in title, because built-in parse turns it into – -->
247247
@@ -265,7 +265,7 @@ alert( 8 ** (1/3) ); // 2 (степень 1/3 равна кубическому
265265
```
266266
267267
```warn
268-
Инкремент/декремент можно применить только к переменной. Код 5++ вернёт ошибку.
268+
Инкремент/декремент можно применить только к переменной. Попытка использовать его на значении, типа 5++, вернёт ошибку.
269269
```
270270
271271
Операторы `++` и `--` могут быть расположены не только после, но и до переменной.
@@ -275,11 +275,11 @@ alert( 8 ** (1/3) ); // 2 (степень 1/3 равна кубическому
275275
276276
Обе эти формы записи делают одно и то же: увеличивают `counter` на `1`.
277277
278-
Есть ли разница между ними? Да, но увидеть её мы сможем, если будем использовать возвращаемое значение `++/--`.
278+
Есть ли разница между ними? Да, но увидеть её мы сможем, только если будем значение, которое возвращают `++/--`.
279279
280-
Давайте уточним. Как мы знаем, все операторы возвращают значение. Операторы инкремент/декремент не исключение. Префиксная форма возвращает новое значение, в то время как постфиксная форма возвращает старое (до увеличения/уменьшения числа).
280+
Давайте проясним этот момент. Как мы знаем, все операторы возвращают значение. Операторы инкремент/декремент не исключение. Префиксная форма возвращает новое значение, в то время как постфиксная форма возвращает старое (до увеличения/уменьшения числа).
281281
282-
Пример:
282+
Чтобы увидеть разницу, вот небольшой пример:
283283
284284
```js run
285285
let counter = 1;
@@ -309,15 +309,15 @@ alert(a); // *!*1*/!*
309309
let counter = 0;
310310
counter++;
311311
++counter;
312-
alert( counter ); // 2, `++counter` и `counter++` просто увеличивают число
312+
alert( counter ); // 2, обе строки сделали одно и то же
313313
```
314314
- Если хочется тут же использовать результат, то нужна префиксная форма:
315315
316316
```js run
317317
let counter = 0;
318318
alert( ++counter ); // 1
319319
```
320-
- Если нужно увеличить, но нужно значение переменной *до увеличения* – постфиксная форма:
320+
- Если нужно увеличить, и при этом получить значение переменной *до увеличения* – постфиксная форма:
321321
322322
```js run
323323
let counter = 0;
@@ -394,7 +394,7 @@ n *= 2; // теперь n=14 (работает как n = n * 2)
394394
alert( n ); // 14
395395
```
396396
397-
Так можно сделать для операторов `+,-,*,/,%` и бинарных `<<,>>,>>>,&,|,^`.
397+
Подобные краткие формы записи существуют для всех арифметических и побитовых операторов: `/=`, `-=` и так далее.
398398
399399
Вызов с присваиванием имеет в точности такой же приоритет, как обычное присваивание, то есть выполнится после большинства других операций:
400400
@@ -408,7 +408,7 @@ alert( n ); // 16 (сначала выполнится правая часть,
408408
409409
## Оператор запятая
410410
411-
Оператор `,` редко используется и является одним из самых необычных. Иногда он используется для написания более короткого кода, поэтому нам нужно знать его, чтобы понимать, что происходит.
411+
Оператор "запятая" `,` редко используется и является одним из самых необычных. Иногда он используется для написания более короткого кода, поэтому нам нужно знать его, чтобы понимать, что при этом происходит.
412412
413413
Оператор запятая предоставляет нам возможность вычислять несколько выражений, разделяя их запятой `,`. Каждое выражение выполняется, но возвращается результат только последнего.
414414
@@ -427,12 +427,12 @@ alert( a ); // 7 (результат 3 + 4)
427427
```smart header="Запятая имеет очень низкий приоритет"
428428
Пожалуйста, обратите внимание, что оператор запятая имеет очень низкий приоритет, приоритет которого ниже `=`, поэтому скобки важны в приведённом примере выше.
429429
430-
Без них: `a = 1 + 2, 3 + 4` сначала выполнится `+`, суммируя числа в `a = 3, 7`, затем оператор присваивания `=` присвоит `a = 3`, и в конце число не будет обработано, поэтому игнорируется.
430+
Без них в `a = 1 + 2, 3 + 4` сначала выполнится `+`, суммируя числа в `a = 3, 7`, затем оператор присваивания `=` присвоит `a = 3`, а то что идёт дальше, будет игнорировано. Всё так же, как в `(a = 1 + 2), 3+4`.
431431
```
432432
433-
Зачем нам оператор, который отбрасывает всё, кроме последней части?
433+
Зачем нам оператор, который отбрасывает всё, кроме последнего выражения?
434434
435-
Обычно он используется в составе более сложных конструкций, чтобы сделать несколько действий в одной строке.
435+
Иногда его используют в составе более сложных конструкций, чтобы сделать несколько действий в одной строке.
436436
437437
Например:
438438
@@ -443,4 +443,4 @@ for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
443443
}
444444
```
445445
446-
Такие трюки используются во многих JavaScript-фреймворках. Вот почему мы упоминаем их. Но, обычно, они не улучшают читабельность кода, поэтому нам нужно сначала подумать, прежде чем их использовать.
446+
Такие трюки используются во многих JavaScript-фреймворках. Вот почему мы упоминаем их. Но обычно они не улучшают читабельность кода, поэтому стоит хорошо подумать, прежде чем их использовать.

0 commit comments

Comments
 (0)