Запропонувати правкуПокращити цю статтюДопрацюйте відповідь до «Параметри за умовчанням». Ваші зміни проходять модерацію перед публікацією.Потрібне підтвердженняКонтентЩо ви змінюєте🇺🇸EN🇺🇦UAПереглядЗаголовок (UA)Коротка відповідь (UA)**Параметри за умовчанням** - це значення, задані прямо у визначенні функції, які використовуються, якщо відповідний аргумент не передано або він дорівнює `undefined`. Значенням може бути будь-який вираз, зокрема виклик іншої функції чи посилання на попередній параметр. **Ключове:** параметр за умовчанням спрацьовує лише при `undefined`, а не при інших хибних значеннях на кшталт `0`, `""` чи `null`.Показується над повною відповіддю для швидкого нагадування.Відповідь (UA)Зображення## Що це таке > Параметри за умовчанням дозволяють задати значення параметру функції **прямо в її визначенні**, > яке буде використано, якщо під час виклику цього аргументу немає або він дорівнює `undefined`. --- ### Приклад без параметрів за умовчанням ```javascript function greet(name) { console.log(`Привіт, ${name}!`); } greet("Alice"); // Привіт, Alice! greet(); // Привіт, undefined! ``` Якщо аргумент не передано, `name` дорівнює `undefined`. --- ### Приклад з параметром за умовчанням ```javascript function greet(name = "гість") { console.log(`Привіт, ${name}!`); } greet("Alice"); // Привіт, Alice! greet(); // Привіт, гість! ``` Тепер, якщо аргумент не передано, функція бере значення за умовчанням `"гість"`. --- ## Як це працює Параметр за умовчанням спрацьовує, якщо аргумент: - **не переданий взагалі**, або - **явно дорівнює** `undefined` ```javascript function test(a = 10) { console.log(a); } test(); // 10 (немає аргументу) test(undefined); // 10 (явно undefined) test(null); // null (не undefined!) ``` --- ## Можна використовувати вирази та функції Значення за умовчанням не обов'язково має бути константою, це може бути **будь-який вираз**, навіть виклик іншої функції. ```javascript function getRandom() { return Math.floor(Math.random() * 10); } function printNumber(n = getRandom()) { console.log(n); } printNumber(); // випадкове число від 0 до 9 printNumber(7); // 7 ``` --- ## Порядок і комбінування Параметри за умовчанням можна задавати **у будь-якому** порядку, але найчастіше - у кінці списку аргументів. ```javascript function info(name, age = 18, city = "Kyiv") { console.log(`${name}, ${age} років, з ${city}`); } info("Alice"); // Alice, 18 років, з Kyiv info("Bob", 25, "Lviv"); // Bob, 25 років, з Lviv ``` Якщо пропустити значення не в кінці - потрібно явно передати `undefined`: ```javascript info("Oleh", undefined, "Warsaw"); // Oleh, 18 років, з Warsaw ``` --- ## Можна використовувати інші параметри як значення за умовчанням ```javascript function sum(a, b = a) { return a + b; } console.log(sum(5)); // 10 console.log(sum(5, 2)); // 7 ``` --- ## Відмінність від старого способу (до ES6) Раніше програмісти писали "емуляцію" через `||`: ```javascript function greet(name) { name = name || "гість"; console.log(`Привіт, ${name}!`); } ``` Але це мало недолік: ```javascript greet(""); // Привіт, гість! - хоча рядок порожній, а не undefined ``` Параметри за умовчанням кращі, тому що вони спрацьовують **лише при** `undefined`, а не при "хибних" значеннях на кшталт `0`, `""` або `false`. --- ## Коротко запам'ятати | Властивість | Опис | |---|---| | Коли спрацьовує | Якщо аргумент не передано або він дорівнює `undefined` | | Тип значення | Будь-який вираз, число, рядок, функція тощо | | Можна посилатися на попередні параметри | Так | | Працює у стрілкових функціях | Так | | Не замінює `null`, `0`, `''` | Ні, вони вважаються переданими значеннями | --- ## Приклад для запам'ятовування ```javascript function connect(host = "localhost", port = 3000) { console.log(`Підключення до ${host}:${port}`); } connect(); // localhost:3000 connect("api.example.com"); // api.example.com:3000 connect("api.example.com", 8080); // api.example.com:8080 ```Для рев’юераПримітка для модератора (необов’язково)Бачить лише модератор. Прискорює рев’ю.