Skip to content

Commit 3968cf1

Browse files
authored
Update article.md
1 parent c7542f7 commit 3968cf1

1 file changed

Lines changed: 27 additions & 27 deletions

File tree

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

Lines changed: 27 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Операторы
22

3-
Несколько операторов мы знаем со школы – это обычные сложение `+`, умножение `*`, вычитание `-` и так далее.
3+
Многие операторы знакомы нам ещё со школы – это обычные сложение `+`, умножение `*`, вычитание `-` и так далее.
44

55
В этой главе мы сконцентрируемся на операторах, которые в курсе математики не проходят.
66

@@ -50,9 +50,9 @@ alert( '1' + 2 ); // "12"
5050
alert( 2 + '1' ); // "21"
5151
```
5252

53-
Причем не важно, справа или слева находится операнд-строка. Правило простое: если хотя бы один операнд является строкой, то второй будет также преобразован к строке.
53+
Причём не важно, справа или слева находится операнд-строка. Правило простое: если хотя бы один операнд является строкой, то второй будет также преобразован к строке.
5454

55-
Тем не менее, помните, что операции выполняются слева направо. Если перед строкой идут два числа, то числа будут сложены перед преобразование в строку:
55+
Тем не менее, помните, что операции выполняются слева направо. Если перед строкой идут два числа, то числа будут сложены перед преобразованием в строку:
5656

5757

5858
```js run
@@ -70,7 +70,7 @@ alert( '6' / '2' ); // 3
7070

7171
## Преобразование к числу, унарный плюс +
7272

73-
Плюс `+` существует в двух формах: бинарной, которую мы использовали выше и унарной форме.
73+
Плюс `+` существует в двух формах: бинарной, которую мы использовали выше, и унарной.
7474

7575
Унарный, то есть применённый к одному значению, плюс `+` ничего не делает с числами. Но если операнд не число, унарный плюс преобразует его в число.
7676

@@ -93,7 +93,7 @@ alert( +"" ); // 0
9393

9494
На самом деле это то же самое, что и `Number(...)`, только короче.
9595

96-
Необходимость преобразовать строки в числа возникает очень часто. Например, когда мы получаем значения из HTML-полей, то они обычно в форме строк.
96+
Необходимость преобразовывать строки в числа возникает очень часто. Например, когда мы получаем значения из HTML-полей, то они обычно в форме строк.
9797

9898
А что, если их нужно, к примеру, сложить?
9999

@@ -121,19 +121,19 @@ alert( +apples + +oranges ); // 5
121121
// alert( Number(apples) + Number(oranges) ); // 5
122122
```
123123

124-
С точки зрения математики такое изобилие плюсов может показаться странным. С точки зрения программирования – никаких разночтений: сначала выполнятся унарные плюсы, приведут строки к числам, а затем – бинарный `'+'` их сложит.
124+
С точки зрения математики, такое изобилие плюсов может показаться странным. С точки зрения программирования – никаких разночтений: сначала выполнятся унарные плюсы, приведут строки к числам, а затем – бинарный `'+'` их сложит.
125125

126126
Почему унарные плюсы выполнились до бинарного сложения? Как мы сейчас увидим, дело в их приоритете.
127127

128128
## Приоритет
129129

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

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

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

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

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

@@ -150,13 +150,13 @@ alert( +apples + +oranges ); // 5
150150
| 3 | присваивание | `=` |
151151
| ... | ... | ... |
152152

153-
Так как "унарный плюс" имеет приоритет `16`, который выше, чем `13` у "сложения" (бинарный плюс), то выражении `"+apples + +oranges"` сначала выполнятся унарные плюсы, а затем сложение.
153+
Так как "унарный плюс" имеет приоритет `16`, который выше, чем `13` у "сложения" (бинарный плюс), то в выражении `"+apples + +oranges"` сначала выполнятся унарные плюсы, а затем сложение.
154154

155155
## Присваивание
156156

157-
Обратим внимание, в таблице приоритетов также есть оператор присваивания `=`. У него один из самых низких приоритетов: `3`.
157+
Давайте отметим, что в таблице приоритетов также есть оператор присваивания `=`. У него один из самых низких приоритетов: `3`.
158158

159-
Именно поэтому, когда переменную чему-либо присваивают, например, `x = 2 * 2 + 1` сначала выполнится арифметика, а уже затем произойдёт присваивание `=`.
159+
Именно поэтому, когда переменной что-либо присваивают, например, `x = 2 * 2 + 1`, то сначала выполнится арифметика, а уже затем произойдёт присваивание `=`.
160160

161161
```js
162162
let x = 2 * 2 + 1;
@@ -178,7 +178,7 @@ alert( b ); // 4
178178
alert( c ); // 4
179179
```
180180

181-
Такое присваивание работает справа-налево. Сначала вычисляется самое правое выражение `2 + 2`, и затем присвоится переменным слева: `c`, `b` и `a`. В конце у всех переменных будет одно значение.
181+
Такое присваивание работает справа-налево. Сначала вычисляется самое правое выражение `2 + 2` и затем оно присвоится переменным слева: `c`, `b` и `a`. В конце у всех переменных будет одно значение.
182182

183183
````smart header="Оператор `\"=\"` возвращает значение"
184184
Все операторы возвращают значение. Для некоторых это более очевидно, например сложение `+` или умножение `*`. Оператор присваивания не является исключением.
@@ -201,7 +201,7 @@ alert( c ); // 0
201201

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

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

207207
## Взятие остатка %
@@ -222,7 +222,7 @@ alert( 6 % 3 ); // 0, остаток от деления 6 на 3
222222

223223
Оператор возведения в степень `**` недавно добавили к языку.
224224

225-
Для натурального числа `b` результат `a ** b` равен `a`, умноженному на него `b` раз.
225+
Для натурального числа `b` результат `a ** b` равен `a`, умноженному на само себя `b` раз.
226226

227227
Например:
228228

@@ -277,7 +277,7 @@ alert( 8 ** (1/3) ); // 2 (степень 1/3 равна кубическому
277277
278278
Есть ли разница между ними? Да, но увидеть её мы сможем, если будем использовать возвращаемое значение `++/--`.
279279
280-
Давайте уточним. Как мы знаем все операторы возвращают значение. Операторы инкремент/декремент не исключение. Префиксная форма возвращает новое значение, в то время как постфиксная форма возвращает старое (до увеличения/уменьшения числа).
280+
Давайте уточним. Как мы знаем, все операторы возвращают значение. Операторы инкремент/декремент не исключение. Префиксная форма возвращает новое значение, в то время как постфиксная форма возвращает старое (до увеличения/уменьшения числа).
281281
282282
Пример:
283283
@@ -341,7 +341,7 @@ let counter = 1;
341341
alert( 2 * counter++ ); // 2, потому что counter++ возвращает "старое" значение
342342
```
343343
344-
Хотя технически всё в порядке, такая запись обычно делает код менее читабельным. Одна строка выполняет множество действий -- не хорошо.
344+
Хотя технически всё в порядке, такая запись обычно делает код менее читабельным. Одна строка выполняет множество действий -- нехорошо.
345345
346346
При беглом чтении кода можно с лёгкостью пропустить такой `counter++`, и будет неочевидно, что переменая увеличивается.
347347
@@ -362,15 +362,15 @@ counter++;
362362
363363
Поддерживаются следующие побитовые операторы:
364364
365-
- AND ( `&` )
366-
- OR ( `|` )
367-
- XOR ( `^` )
368-
- NOT ( `~` )
369-
- LEFT SHIFT ( `<<` )
370-
- RIGHT SHIFT ( `>>` )
371-
- ZERO-FILL RIGHT SHIFT ( `>>>` )
365+
- AND(и) ( `&` )
366+
- OR(или) ( `|` )
367+
- XOR(побитовое исключающее или) ( `^` )
368+
- NOT(не) ( `~` )
369+
- LEFT SHIFT(левый сдвиг) ( `<<` )
370+
- RIGHT SHIFT(правый сдвиг) ( `>>` )
371+
- ZERO-FILL RIGHT SHIFT(правый сдвиг с заполнением нулями) ( `>>>` )
372372
373-
Они используются редко. Чтобы понять их нам нужно углубиться в низкоуровневое представление чисел, и было бы не оптимально делать это прямо сейчас, тем более что они нам не понадобятся в ближайшее время. Если вам интересно, вы можете прочитать статью [Побитовые операторы](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) на MDN. Более практичным было бы сделать это, когда возникнет реальная необходимость.
373+
Они используются редко. Чтобы понять их, нам нужно углубиться в низкоуровневое представление чисел, и было бы неоптимально делать это прямо сейчас, тем более что они нам не понадобятся в ближайшее время. Если вам интересно, вы можете прочитать статью [Побитовые операторы](https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Operators/Bitwise_Operators) на MDN. Более практичным было бы сделать это, когда возникнет реальная необходимость.
374374
375375
## Сокращённая арифметика с присваиванием
376376
@@ -422,7 +422,7 @@ let a = (1 + 2, 3 + 4);
422422
alert( a ); // 7 (результат 3 + 4)
423423
```
424424
425-
Первое выражение `1 + 2` выполняется, а результат отбрасывается. Затем идёт `3 + 4`, выражение выражение выполняется и возвращается результат.
425+
Первое выражение `1 + 2` выполняется, а результат отбрасывается. Затем идёт `3 + 4`, выражение выполняется и возвращается результат.
426426
427427
```smart header="Запятая имеет очень низкий приоритет"
428428
Пожалуйста, обратите внимание, что оператор запятая имеет очень низкий приоритет, приоритет которого ниже `=`, поэтому скобки важны в приведённом примере выше.
@@ -437,10 +437,10 @@ alert( a ); // 7 (результат 3 + 4)
437437
Например:
438438
439439
```js
440-
// three operations in one line
440+
// три операции в одной строке
441441
for (*!*a = 1, b = 3, c = a * b*/!*; a < 10; a++) {
442442
...
443443
}
444444
```
445445
446-
Такие трюки используются во многих JavaScript-фреймворках. Вот почему мы упоминаем их. Но, обычно, они не улучшают читабельность кода, поэтому нам нужна сначала подумать, прежде чем их использовать.
446+
Такие трюки используются во многих JavaScript-фреймворках. Вот почему мы упоминаем их. Но, обычно, они не улучшают читабельность кода, поэтому нам нужно сначала подумать, прежде чем их использовать.

0 commit comments

Comments
 (0)