Skip to content

Commit 2ce3851

Browse files
committed
Made a few requested changes
1 parent bd4b8d1 commit 2ce3851

File tree

1 file changed

+15
-15
lines changed
  • 1-js/06-advanced-functions/02-rest-parameters-spread-operator

1 file changed

+15
-15
lines changed

1-js/06-advanced-functions/02-rest-parameters-spread-operator/article.md

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ alert( sumAll(1, 2) ); // 3
4343
alert( sumAll(1, 2, 3) ); // 6
4444
```
4545

46-
Мы можем положить первые несколько параметров в переменные и «собрать» остальные.
46+
Мы можем положить первые несколько параметров в переменные и "собрать" остальные.
4747

4848
В примере ниже первые два аргумента функции станут именем и фамилией, а третий и последующие станут массивом `titles`:
4949

@@ -73,9 +73,9 @@ function f(arg1, ...rest, arg2) { // arg2 после ...rest ?!
7373
`...rest` должен быть в конце.
7474
````
7575

76-
## Переменная «arguments» [#the-arguments-variable]
76+
## Переменная "arguments"
7777

78-
`arguments` – это специальный массивоподобный объект, который содержит все аргументы функции вместе с их индексами.
78+
`arguments` – это специальный псевдомассив, который содержит все аргументы функции вместе с их индексами.
7979

8080
Например:
8181

@@ -100,7 +100,7 @@ showName("Илья");
100100

101101
Этот способ всё ещё работает, мы можем использовать его и сегодня.
102102

103-
Но у него есть один недостаток. Хотя `arguments` похож на массив и он тоже перечисляемый, это всё же не массив. Он не поддерживает методы объекта `Array`, поэтому мы не можем, например, вызвать `arguments.map(...)`.
103+
Но у него есть один недостаток. Хотя `arguments` похож на массив и он тоже перебираемый, это всё же не массив. Он не поддерживает методы объекта `Array`, поэтому мы не можем, например, вызвать `arguments.map(...)`.
104104

105105
К тому же, `arguments` всегда содержит все аргументы функции — мы не можем получить их часть. Остаточные параметры позволяют это сделать.
106106

@@ -111,20 +111,20 @@ showName("Илья");
111111

112112
Пример:
113113

114-
<!-- Думаю, здесь лучше сделать PR, чтобы было showArg(2), иначе не совсем ясно, почему не должно быть 1 -->
115114
```js run
116115
function f() {
117116
let showArg = () => alert(arguments[0]);
118-
showArg();
117+
showArg(2);
119118
}
120119

121120
f(1); // 1
122121
```
122+
123123
````
124124
125125
Как мы помним, у стрелочных функций нет собственного `this`. Теперь мы знаем, что нет и своего объекта `arguments`.
126126
127-
## Оператор расширения [#spread-operator]
127+
## Оператор расширения
128128
129129
Мы узнали, как получить массив из списка параметров.
130130
@@ -152,14 +152,14 @@ alert( Math.max(arr) ); // NaN
152152
153153
И тут нам поможет *оператор расширения*. Он похож на остаточные параметры – тоже использует `...`, но делает совершенно противоположное.
154154
155-
Когда `...arr` используется при вызове функции, он «расширяет» перечисляемый объект `arr` в список аргументов.
155+
Когда `...arr` используется при вызове функции, он "расширяет" перебираемый объект `arr` в список аргументов.
156156
157157
Для `Math.max`:
158158
159159
```js run
160160
let arr = [3, 5, 1];
161161
162-
alert( Math.max(...arr) ); // 5 (оператор «раскрывает» массив в список аргументов)
162+
alert( Math.max(...arr) ); // 5 (оператор "раскрывает" массив в список аргументов)
163163
```
164164
165165
Этим же способом мы можем передать несколько итерируемых объектов:
@@ -193,7 +193,7 @@ let merged = [0, ...arr, 2, ...arr2];
193193
alert(merged); // 0,3,5,1,2,8,9,15 (0, затем arr, затем 2, в конце arr2)
194194
```
195195
196-
В примерах выше мы использовали массив, чтобы продемонстрировать свойства оператора расширения, но он работает с любым перечисляемым объектом.
196+
В примерах выше мы использовали массив, чтобы продемонстрировать свойства оператора расширения, но он работает с любым перебираемым объектом.
197197
198198
Например, оператор расширения подойдёт для того, чтобы превратить строку в массив символов:
199199
@@ -220,20 +220,20 @@ alert( Array.from(str) ); // П,р,и,в,е,т
220220
221221
Но между `Array.from(obj)` и `[...obj]` есть разница:
222222
223-
- `Array.from` работает как с псевдомассивами, так и с простыми итерируемыми объектами
224-
- Оператор расширения работает только с простыми итерируемыми объектами
223+
- `Array.from` работает как с псевдомассивами, так и с итерируемыми объектами
224+
- Оператор расширения работает только с итерируемыми объектами
225225
226226
Выходит, что если нужно сделать из чего угодно массив, `Array.from` — более универсальный метод.
227227
228228
229-
## Итого [#summary]
229+
## Итого
230230
231231
Когда мы видим `"..."` в коде, это могут быть как остаточные параметры, так и оператор расширения.
232232
233233
Как отличить их друг от друга:
234234
235-
- Если `...` располагается в конце аргументов функции, – это «остаточные параметры». Они собирают остальные неуказанные аргументы и делают из них массив.
236-
- Если `...` встретился в вызове функции или где-либо ещё, – это «оператор расширения». Он извлекает элементы из массива.
235+
- Если `...` располагается в конце аргументов функции, – это "остаточные параметры". Он собирает остальные неуказанные аргументы и делает из них массив.
236+
- Если `...` встретился в вызове функции или где-либо ещё, – это "оператор расширения". Он извлекает элементы из массива.
237237
238238
Полезно запомнить:
239239

0 commit comments

Comments
 (0)