diff --git a/1-js/06-advanced-functions/02-rest-parameters-spread/article.md b/1-js/06-advanced-functions/02-rest-parameters-spread/article.md index 9a9a370ab..7e7f53418 100644 --- a/1-js/06-advanced-functions/02-rest-parameters-spread/article.md +++ b/1-js/06-advanced-functions/02-rest-parameters-spread/article.md @@ -102,10 +102,10 @@ showName("Ilya"); Крім того, він завжди містить усі аргументи. Ми не можемо отримати їх частково, як це було зроблено з параметрами залишку. -Тому, коли нам потрібні вбудовані мутоди, тоді краще використати параметри залишку. +Тому, коли нам потрібні вбудовані методи, тоді краще використати параметри залишку. -````smart header="Стрілочні функції на мають `\"arguments\"`" - Якщо ми викличемо `arguments` об'єкти на стрілочній функції, він візьме їх із зовнішньої "звичайної" функції. +````smart header="Стрілочні функції не мають `\"arguments\"`" + Якщо ми викличемо `arguments` об'єкта із стрілочною функцією, він візьме їх із зовнішньої "звичайної" функції. Ось приклад: @@ -148,7 +148,7 @@ alert( Math.max(arr) ); // NaN І, звісно ж, ми не можемо вручну перераховувати елементи в коді `Math.max(arr[0], arr[1], arr[2])`, тому що ми можемо не знати, скільки їх існує. Під час виконання нашого сценарію їх може бути багато, а може і не бути. І це було б потворно. -*Синтаксис розширення* надопомогу! Він схожий на параметри залишку, також використовуються `...`, але працює все навпаки. +Нам допоможе *синтаксис розширення*! Він схожий на параметри залишку, також використовуються `...`, але працює все навпаки. Коли `...arr` використовується у виклику функції, він "розширює" повторюванний об'єкт `arr` до списку аргументів. @@ -206,7 +206,7 @@ alert( [...str] ); // H,e,l,l,o Отже, для рядка, `for..of` повертає символи так само `...str` повертає `"H","e","l","l","o"`. Список символів передається в ініціалізатор масиву `[...str]`. -Для цього конкретного завдання ми також могли б використовувати `Array.from`, тому що він перетворює ітерабельний (як рядок) в масив: +Для цього конкретного завдання ми також могли б використовувати `Array.from`, тому що він перетворює ітерабельний об'єкт (як рядок) на масив: ```js run let str = "Hello"; @@ -219,10 +219,10 @@ alert( Array.from(str) ); // H,e,l,l,o Але між `Array.from(obj)` та `[...obj]` є тонка різниця: -- `Array.from` працює як з масиво-подібними, так і з ітераторами. +- `Array.from` працює як з масиво-подібними об'єктами, так і з об'єктами, що ітеруються. - Синтаксис розширення працює тільки з ітераторами. -Отже, для завдання перетворити щось на масив, `Array.from` буде більш універсальним. +Отже, для завдання перетворити щось на масив `Array.from` буде більш універсальним. ## Створити копію масива/об’єкта @@ -282,8 +282,8 @@ alert(JSON.stringify(objCopy)); // {"a":1,"b":2,"c":3} Існує простий спосіб відрізнити їх: -- Коли `...` находиться в кінці параметрів функції, це "залишкові параметри" і збирають решту списку аргументів у масив. -- Коли `...` виникає під час виклику функції чи подібного, це називається "синтаксисом розширення" і розширює масив у список. +- Коли `...` находиться в кінці параметрів функції, це "залишкові параметри" і він збирає решту переданих аргументів у масив. +- Коли `...` виникає під час виклику функції чи чогось подібного, це називається "синтаксисом розширення" і розширює масив у список. Використовуйте паттерни: