メインコンテンツにスキップ
モジュール 4 · レッスン 3 / 4コース内の 15/32~12 min
モジュールのレッスン (3/4)

デフォルトパラメータと残りのパラメータ

JavaScript を使用すると、パラメータを オプション (デフォルト値あり) にすることができます そして、残りの演算子 (...) を使用して、可変数の引数を受け入れます。

デフォルトパラメータ

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

通話時に拡散

... のもう 1 つの側面は 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 回の試行後に解決策が利用可能になります