Модульні уроки (3/4)
Параметри за замовчуванням і решту
JavaScript дозволяє робити параметри додатковими (зі значенням за замовчуванням)
і приймати змінну кількість аргументів з оператором rest (...).
Параметри за замовчуванням
function saluta(nome, prefisso = 'Ciao') {
return `${prefisso}, ${nome}!`;
}
saluta('Anna'); // 'Ciao, Anna!'
saluta('Marco', 'Buongiorno'); // 'Buongiorno, Marco!'Значення за замовчуванням застосовується лише тоді, коли аргумент має значення undefined (включаючи випадок «не пройдено»).
Для null або 0 за умовчанням не діє:
function f(x = 10) {
return x;
}
f(); // 10
f(undefined); // 10
f(null); // null
f(0); // 0Решта: ...names
Щоб прийняти змінну кількість аргументів, зберіть їх у масив за допомогою ...:
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 старих функцій).
Решта має бути останнім параметром:
function f(primo, ...altri) {
/* ok */
}
// function f(...altri, ultimo) {} // SyntaxErrorРозповсюдження під час виклику
Іншою стороною ... є оператор spread, який «розбиває» масив на окремі аргументи під час виклику:
function somma(a, b, c) {
return a + b + c;
}
const nums = [1, 2, 3];
somma(...nums); // 6, equivalent to somma(1, 2, 3)Спробуйте
Визначте функцію `sum(a, b)`, де `b` має значення за замовчуванням 0. Вона має передавати такі твердження: sum(5) === 5, sum(2, 3) === 5, sum(0) === 0.
Показати підказку
функція sum(a, b = 0) { return a + b; }
Рішення доступне після 3 спроб
Повторна вправа
Визначте функцію `mean(...nums)`, яка повертає середнє арифметичне своїх аргументів або 0, якщо жоден не передається.
Показати підказку
Якщо nums.length дорівнює 0, повертає 0; інакше підсумуйте та поділіть.
Рішення доступне після 3 спроб