Skip to main content

Параметри за умовчанням

Що це таке

Параметри за умовчанням дозволяють задати значення параметру функції прямо в її визначенні, яке буде використано, якщо під час виклику цього аргументу немає або він дорівнює 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

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.