Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
objavlenie_funkcii [2023/11/13 21:09] tro [Обявление стрелочной функции (Неявне повернення)] |
objavlenie_funkcii [2023/11/20 21:20] (текущий) tro [Виклик функціхї] |
||
|---|---|---|---|
| Строка 115: | Строка 115: | ||
| return elementOfMassiv*3 | return elementOfMassiv*3 | ||
| }) | }) | ||
| + | </ | ||
| + | **Приклад: | ||
| + | < | ||
| + | const getUserNames = (array) => { | ||
| + | const newArray = []; | ||
| + | |||
| + | array.forEach(element => { | ||
| + | newArray.push(element.name); | ||
| + | }); | ||
| + | |||
| + | return newArray; | ||
| + | }; | ||
| </ | </ | ||
| ===== Встановлення значення параметру за-замовчанням ===== | ===== Встановлення значення параметру за-замовчанням ===== | ||
| Строка 125: | Строка 137: | ||
| ===== Получение аргументов в функции ===== | ===== Получение аргументов в функции ===== | ||
| ==== arguments ==== | ==== arguments ==== | ||
| + | === Для звичайної функції === | ||
| змінна (псевдомасив) за замовченням куди будуть передаватись усі передані аргументи | змінна (псевдомасив) за замовченням куди будуть передаватись усі передані аргументи | ||
| < | < | ||
| Строка 138: | Строка 151: | ||
| console.log(multiply(1, | console.log(multiply(1, | ||
| + | </ | ||
| + | |||
| + | === Для стрілочної функції === | ||
| + | У стрілочних функцій немає локальної змінної arguments, що містить усі аргументи. Якщо необхідно зібрати всі аргументи в масив, використовується операція rest. | ||
| + | < | ||
| + | const add = (...args) => { | ||
| + | console.log(args); | ||
| + | }; | ||
| + | |||
| + | add(1, 2, 3); // [1, 2, 3] | ||
| </ | </ | ||
| ==== rest ==== | ==== rest ==== | ||
| + | === Для звичайної функції === | ||
| + | |||
| (...rest). Це спеціальний синтаксис, | (...rest). Це спеціальний синтаксис, | ||
| **Використовуєтся при описі функції**. | **Використовуєтся при описі функції**. | ||
| Строка 151: | Строка 176: | ||
| multiply(1, 2, 3, 4); // 1 2 [3, 4] | multiply(1, 2, 3, 4); // 1 2 [3, 4] | ||
| + | </ | ||
| + | === Для стрілочної функції === | ||
| + | У стрілочних функцій немає локальної змінної arguments, що містить усі аргументи. Якщо необхідно зібрати всі аргументи в масив, використовується операція rest. | ||
| + | < | ||
| + | const add = (...args) => { | ||
| + | console.log(args); | ||
| + | }; | ||
| + | |||
| + | add(1, 2, 3); // [1, 2, 3] | ||
| </ | </ | ||
| ==== spread ==== | ==== spread ==== | ||
| Строка 159: | Строка 193: | ||
| console.log(Math.max(...temps)); | console.log(Math.max(...temps)); | ||
| </ | </ | ||
| + | ==== Виклик функції ==== | ||
| + | === Створення функції як методу змінної-обїекта === | ||
| + | < | ||
| + | const user = { | ||
| + | username: " | ||
| + | showThis() { | ||
| + | console.log(this); | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | user.showThis(); | ||
| + | </ | ||
| + | === Створення фунції і присвоєння її до властивості обїекту === | ||
| + | | ||
| + | < | ||
| + | "use strict"; | ||
| + | |||
| + | function showThis() { | ||
| + | console.log(" | ||
| + | } | ||
| + | |||
| + | const user = { | ||
| + | username: " | ||
| + | }; | ||
| + | |||
| + | user.showContext = showThis; | ||
| + | |||
| + | // Викликаємо в контексті об' | ||
| + | user.showContext(); | ||
| + | |||
| + | // Викликаємо в глобальному контексті | ||
| + | showThis(); // "this in showThis: undefined" | ||
| + | </ | ||
| + | ===== Вказання контексту виклику функції ===== | ||
| + | ==== call ==== | ||
| + | < | ||
| + | foo.call(thisArg, | ||
| + | </ | ||
| + | * thisArg — об' | ||
| + | * arg1, arg2, ... — необов' | ||
| + | Метод call викликає функцію foo так, що значення this у функції буде посилатися на об' | ||
| + | ==== apply ==== | ||
| + | Метод apply є аналогом методу call. Відмінність у тому, що в методі apply() синтаксис передачі аргументів вимагає масиву, | ||
| + | < | ||
| + | foo.apply(thisArg, | ||
| + | </ | ||
| + | ==== bind ==== | ||
| + | Метод bind створює і повертає нову функцію, | ||
| + | < | ||
| + | const boundFoo = foo.bind(thisArg, | ||
| + | </ | ||
| + | Приклад | ||
| + | < | ||
| + | "use strict"; | ||
| + | |||
| + | const customer = { | ||
| + | username: " | ||
| + | sayHello() { | ||
| + | console.log(`Hello, | ||
| + | } | ||
| + | }; | ||
| + | |||
| + | customer.sayHello(); | ||
| + | |||
| + | const greet = customer.sayHello.bind(customer); | ||
| + | |||
| + | greet(); // " | ||
| + | </ | ||
| + | Коли ми використовуємо bind(), ми створюємо нову функцію greet. Ця нова функція завжди матиме правильний контекст і може використовувати властивість username об' | ||
| + | |||