Skip to content

Commit ed1759b

Browse files
authored
Merge branch 'javascript-tutorial:master' into object-to-primitive
2 parents 3dc728c + f6f1518 commit ed1759b

File tree

17 files changed

+1711
-1200
lines changed

17 files changed

+1711
-1200
lines changed
Lines changed: 1 addition & 1 deletion
Loading

1-js/02-first-steps/14-switch/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ switch (+a) {
117117
Для примера, выполним один и тот же код для `case 3` и `case 5`, сгруппировав их:
118118
119119
```js run no-beautify
120-
let a = 2 + 2;
120+
let a = 3;
121121
122122
switch (a) {
123123
case 4:
Lines changed: 27 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,29 @@
1-
# Функции-стрелки, основы
1+
# Стрелочные функции, основы
22

3-
Существует ещё более простой и краткий синтаксис для создания функций, который часто лучше, чем синтаксис Function Expression.
3+
Существует ещё один очень простой и лаконичный синтаксис для создания функций, который часто лучше, чем Function Expression.
44

55
Он называется "функции-стрелки" или "стрелочные функции" (arrow functions), т.к. выглядит следующим образом:
66

77
```js
88
let func = (arg1, arg2, ...argN) => expression;
99
```
1010

11-
...Такой код создаёт функцию `func` с аргументами `arg1..argN` и вычисляет `expression` с правой стороны с их использованием, возвращая результат.
11+
Это создаёт функцию `func`, которая принимает аргументы `arg1..argN`, затем вычисляет `expression` в правой части с их использованием и возвращает результат.
1212

13-
Другими словами, это более короткий вариант такой записи:
13+
Другими словами, это сокращённая версия:
1414

1515
```js
1616
let func = function(arg1, arg2, ...argN) {
1717
return expression;
1818
};
1919
```
2020

21-
Давайте взглянем на конкретный пример:
21+
Давайте рассмотрим конкретный пример:
2222

2323
```js run
2424
let sum = (a, b) => a + b;
2525

26-
/* Более короткая форма для:
26+
/* Эта стрелочная функция представляет собой более короткую форму:
2727
2828
let sum = function(a, b) {
2929
return a + b;
@@ -34,29 +34,28 @@ alert( sum(1, 2) ); // 3
3434

3535
```
3636

37-
То есть, `(a, b) => a + b` задаёт функцию с двумя аргументами `a` и `b`, которая при запуске вычисляет выражение справа `a + b` и возвращает его результат.
37+
Как вы можете видеть, `(a, b) => a + b` задаёт функцию, которая принимает два аргумента с именами `a` и `b`. И при выполнении она вычисляет выражение `a + b` и возвращает результат.
3838

3939
- Если у нас только один аргумент, то круглые скобки вокруг параметров можно опустить, сделав запись ещё короче:
4040

4141
```js run
42-
// тоже что и
43-
// let double = function(n) { return n * 2 }
4442
*!*
4543
let double = n => n * 2;
44+
// примерно тоже что и: let double = function(n) { return n * 2 }
4645
*/!*
4746

4847
alert( double(3) ); // 6
4948
```
5049

51-
- Если нет аргументов, указываются пустые круглые скобки:
50+
- Если аргументов нет, круглые скобки будут пустыми, но они должны присутствовать:
5251

5352
```js run
5453
let sayHi = () => alert("Hello!");
5554
5655
sayHi();
5756
```
5857

59-
Функции-стрелки могут быть использованы так же, как и Function Expression.
58+
Стрелочные функции можно использовать так же, как и Function Expression.
6059

6160
Например, для динамического создания функции:
6261

@@ -67,43 +66,47 @@ let welcome = (age < 18) ?
6766
() => alert('Привет') :
6867
() => alert("Здравствуйте!");
6968
70-
welcome(); // теперь всё в порядке
69+
welcome();
7170
```
7271

73-
Поначалу функции-стрелки могут показаться необычными и трудночитаемыми, но это быстро пройдёт, как только глаза привыкнут к этим конструкциям.
72+
Поначалу стрелочные функции могут показаться необычными и даже трудночитаемыми, но это быстро пройдёт по мере того, как глаза привыкнут к этим конструкциям.
7473

75-
Они очень удобны для простых однострочных действий, когда лень писать много букв.
74+
Они очень удобны для простых однострочных действий, когда лень писать много слов.
7675

7776
## Многострочные стрелочные функции
7877

79-
В примерах выше аргументы использовались слева от `=>`, а справа вычислялось выражение с их значениями.
78+
Стрелочные функции, которые мы видели до этого, были очень простыми. Они брали аргументы слева от `=>` и вычисляли и возвращали выражение справа.
8079

81-
Порой нам нужно что-то посложнее, например, выполнить несколько инструкций. Это также возможно, нужно лишь заключить инструкции в фигурные скобки. И использовать `return` внутри них, как в обычной функции.
80+
Иногда нам нужна более сложная функция, с несколькими выражениями и инструкциями. Это также возможно, нужно лишь заключить их в фигурные скобки. При этом важное отличие - в том, что в таких скобках для возврата значения нужно использовать `return` (как в обычных функциях).
8281

83-
Например:
82+
Вроде этого:
8483

8584
```js run
8685
let sum = (a, b) => { // фигурная скобка, открывающая тело многострочной функции
8786
let result = a + b;
8887
*!*
89-
return result; // при фигурных скобках для возврата значения нужно явно вызвать return
88+
return result; // если мы используем фигурные скобки, то нам нужно явно указать "return"
9089
*/!*
9190
};
9291
9392
alert( sum(1, 2) ); // 3
9493
```
9594

96-
```smart header="Дальше будет ещё информация"
97-
Здесь мы рассмотрели функции-стрелки как способ писать меньше букв. Но это далеко не всё!
95+
```smart header="Дальше - больше"
96+
Здесь мы представили главной целью стрелочных функций краткость. Но это ещё не всё!
9897
99-
Стрелочные функции обладают другими интересными особенностями. Их изучение требует знания некоторых других возможностей языка JavaScript, поэтому мы вернёмся к стрелочным функциям позже, в главе <info:arrow-functions>.
98+
Стрелочные функции обладают и другими интересными возможностями.
99+
100+
Чтобы изучить их более подробно, нам сначала нужно познакомиться с некоторыми другими аспектами JavaScript, поэтому мы вернёмся к стрелочным функциям позже, в главе <info:arrow-functions>.
100101
101102
А пока мы можем использовать их для простых однострочных действий и колбэков.
102103
```
103104

104105
## Итого
105106

106-
Функции-стрелки очень удобны для однострочных действий. Они бывают двух типов:
107+
Стрелочные функции очень удобны для простых действий, особенно для однострочныз.
108+
109+
Они бывают двух типов:
107110

108-
1. Без фигурных скобок: `(...args) => expression` -- правая сторона выражение: функция выполняет его и возвращает результат.
109-
2. С фигурными скобками: `(...args) => { body }` -- скобки позволяют нам писать многострочные инструкции внутри функции, но при этом необходимо указывать директиву `return`, чтобы вернуть какое-либо значение.
111+
1. Без фигурных скобок: `(...args) => expression` -- правая сторона выражение: функция вычисляет его и возвращает результат. Скобки можно не ставить, если аргумент только один: `n => n * 2`.
112+
2. С фигурными скобками: `(...args) => { body }` -- скобки позволяют нам писать несколько инструкций внутри функции, но при этом необходимо явно вызывать `return`, чтобы вернуть значение.

1-js/02-first-steps/18-javascript-specials/article.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ alert("После этого сообщения ждите ошибку")
3131

3232
```js
3333
function f() {
34-
// после объявления функции необязательно ставить точку с запятой
34+
// после объявления функции необязательно ставить точку с запятой
3535
}
3636

3737
for(;;) {
@@ -152,6 +152,9 @@ JavaScript поддерживает следующие операторы:
152152
Логические операторы
153153
: Логические И `&&`, ИЛИ `||` используют так называемое "ленивое вычисление" и возвращают значение, на котором оно остановилось (не обязательно `true` или `false`). Логическое НЕ `!` конвертирует операнд в логический тип и возвращает инвертированное значение.
154154

155+
Оператор нулевого слияния
156+
: Оператор `??` предоставляет способ выбора определённого значения из списка переменных. Результатом `a ?? b` будет `a`, если только оно не равно `null/undefined`, тогда `b`.
157+
155158
Сравнение
156159
: Проверка на равенство `==` значений разных типов конвертирует их в число (за исключением `null` и `undefined`, которые могут равняться только друг другу), так что примеры ниже равны:
157160

@@ -171,7 +174,7 @@ JavaScript поддерживает следующие операторы:
171174
Другие операторы
172175
: Существуют и другие операторы, такие как запятая.
173176

174-
Подробности: <info:operators>, <info:comparison>, <info:logical-operators>.
177+
Подробности: <info:operators>, <info:comparison>, <info:logical-operators>, <info:nullish-coalescing-operator>.
175178

176179
## Циклы
177180

0 commit comments

Comments
 (0)