Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
|
objavlenie_funkcii [2023/11/11 19:12] tro |
objavlenie_funkcii [2023/11/20 21:20] (текущий) tro [Виклик функціхї] |
||
|---|---|---|---|
| Строка 5: | Строка 5: | ||
| - | **--------------------Объявление функции стандарт | + | ===== Объявление функции |
| < | < | ||
| function a(){ | function a(){ | ||
| Строка 13: | Строка 14: | ||
| </ | </ | ||
| - | **--------------------Обявление фунционального виражения 1 (нельзя визивать до ее обявления)--------------** | + | ===== Обявление фунционального виражения 1 (нельзя визивать до ее обявления) |
| * через константу щоб її потім випадково не змінили | * через константу щоб її потім випадково не змінили | ||
| < | < | ||
| Строка 20: | Строка 22: | ||
| } | } | ||
| </ | </ | ||
| - | **--------------------Обявление фунционального виражения 2 (нельзя визивать до ее обявления)--------------** | + | ===== Обявление фунционального виражения 2 (нельзя визивать до ее обявления) |
| * через константу щоб її потім випадково не змінили | * через константу щоб її потім випадково не змінили | ||
| < | < | ||
| Строка 27: | Строка 30: | ||
| }; | }; | ||
| </ | </ | ||
| - | < | + | ===== Обявление функции анонимной (для коллБека) ===== |
| - | </ | ||
| - | **--------------------Обявление функции анонимной (для коллБека--------------** | ||
| < | < | ||
| const myFuncrion = function(a, | const myFuncrion = function(a, | ||
| Строка 41: | Строка 42: | ||
| </ | </ | ||
| - | **--------------------Обявление стрелочной функции--------------** | + | ===== Обявление стрелочной функции |
| < | < | ||
| - | const myFunc=(a, | + | // Звичайне оголошення функції |
| - | let c | + | function classicAdd(a, |
| - | return c} | + | return a + b + c; |
| + | } | ||
| + | |||
| + | // Те саме стрілочною функцією | ||
| + | const arrowAdd | ||
| + | return | ||
| + | }; | ||
| </ | </ | ||
| + | |||
| + | Якщо параметр один, його можна оголошувати без круглих дужок. | ||
| < | < | ||
| - | al=> | + | const add = a => { |
| + | return a + 5; | ||
| + | }; | ||
| + | </ | ||
| + | |||
| + | Якщо параметри відсутні, | ||
| + | < | ||
| + | const greet = () => { | ||
| + | | ||
| + | }; | ||
| + | </ | ||
| + | < | ||
| + | // До | ||
| + | function classicAdd(a, | ||
| + | return a + b + c; | ||
| + | } | ||
| + | |||
| + | // Після | ||
| + | const arrowAdd = (a, b, c) => a + b + c; | ||
| </ | </ | ||
| ===== Обявление коллбєк функції ===== | ===== Обявление коллбєк функції ===== | ||
| < | < | ||
| + | // | ||
| + | // | ||
| + | |||
| function funcWithCallback (callbackfunc) { | function funcWithCallback (callbackfunc) { | ||
| callbackfunc() | callbackfunc() | ||
| } | } | ||
| + | // | ||
| function prinnn(){ | function prinnn(){ | ||
| console.log(' | console.log(' | ||
| } | } | ||
| + | //А теперь визиваємо просто функцію у котру у якості параметра передаємо іньшу функцію, | ||
| funcWithCallback(prinnn) | funcWithCallback(prinnn) | ||
| </ | </ | ||
| Строка 82: | Строка 115: | ||
| return elementOfMassiv*3 | return elementOfMassiv*3 | ||
| }) | }) | ||
| + | </ | ||
| + | **Приклад: | ||
| + | < | ||
| + | const getUserNames = (array) => { | ||
| + | const newArray = []; | ||
| + | |||
| + | array.forEach(element => { | ||
| + | newArray.push(element.name); | ||
| + | }); | ||
| + | |||
| + | return newArray; | ||
| + | }; | ||
| </ | </ | ||
| ===== Встановлення значення параметру за-замовчанням ===== | ===== Встановлення значення параметру за-замовчанням ===== | ||
| + | |||
| < | < | ||
| function greet(username = " | function greet(username = " | ||
| Строка 91: | Строка 137: | ||
| ===== Получение аргументов в функции ===== | ===== Получение аргументов в функции ===== | ||
| ==== arguments ==== | ==== arguments ==== | ||
| + | === Для звичайної функції === | ||
| змінна (псевдомасив) за замовченням куди будуть передаватись усі передані аргументи | змінна (псевдомасив) за замовченням куди будуть передаватись усі передані аргументи | ||
| < | < | ||
| Строка 104: | Строка 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). Це спеціальний синтаксис, | ||
| **Використовуєтся при описі функції**. | **Використовуєтся при описі функції**. | ||
| Строка 117: | Строка 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 ==== | ||
| Строка 125: | Строка 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 об' | ||
| + | |||