Перейти к основному содержимому
Модуль 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 попыток