Перейти до основного вмісту
Модуль 4 · Урок 3 із 415/32 у курсі~12 min
Модульні уроки (3/4)

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

JavaScript дозволяє робити параметри додатковими (зі значенням за замовчуванням) і приймати змінну кількість аргументів з оператором rest (...).

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

JS
function saluta(nome, prefisso = 'Ciao') {
  return `${prefisso}, ${nome}!`;
}

saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'

Значення за замовчуванням застосовується лише тоді, коли аргумент має значення undefined (включаючи випадок «не пройдено»). Для null або 0 за умовчанням не діє:

JS
function f(x = 10) {
  return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0

Решта: ...names

Щоб прийняти змінну кількість аргументів, зберіть їх у масив за допомогою ...:

JS
function somma(...numeri) {
  let totale = 0;
  for (const n of numeri) totale += n;
  return totale;
}

somma(); // 0
somma(5); // 5
somma(1, 2, 3, 4); // 10

Усередині функції numeri є справжнім масивом (а не чарівним об’єктом arguments старих функцій).

Решта має бути останнім параметром:

JS
function f(primo, ...altri) {
  /* ok */
}
// function f(...altri, ultimo) {} // SyntaxError

Розповсюдження під час виклику

Іншою стороною ... є оператор spread, який «розбиває» масив на окремі аргументи під час виклику:

JS
function somma(a, b, c) {
  return a + b + c;
}

const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)

Спробуйте

вправи#js.m4.l3.e1
Спроби: 0Завантаження…

Визначте функцію `sum(a, b)`, де `b` має значення за замовчуванням 0. Вона має передавати такі твердження: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.

Завантаження редактора…
Показати підказку

функція sum(a, b = 0) { return a + b; }

Рішення доступне після 3 спроб

Повторна вправа

вправи#js.m4.l3.e2
Спроби: 0Завантаження…

Визначте функцію `mean(...nums)`, яка повертає середнє арифметичне своїх аргументів або 0, якщо жоден не передається.

Завантаження редактора…
Показати підказку

Якщо nums.length дорівнює 0, повертає 0; інакше підсумуйте та поділіть.

Рішення доступне після 3 спроб