このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【JavaScript入門】残余引数

残余引数

 JavaScript の関数では、あらかじめ決まった数の引数を受け取るだけでなく、「引数がいくつ渡されるか分からない」という場面も少なくありません。たとえば、「最初の引数だけは特別扱いして、それ以降の引数はまとめて処理したい」といったケースで便利なのが「残余引数(rest parameters)」と呼ばれる仕組みです。残余引数を使うと、余った引数をまとめて配列として受け取れるようになります。

1.残余引数の基本文法

1.1. 使い方

 関数のパラメータリストに「...変数名」という記述を加えると、その引数より後ろに渡された値をすべて配列として取得できます。

function 関数名(...残余引数) {
  // 残余引数は配列として扱われる
}

 残余引数は必ずパラメータの末尾に配置しなければなりません。通常の引数と組み合わせる場合も、先に通常の引数を定義し、最後に ...残余引数 を書きます。

1.2. サンプル

function example(first, second, ...others) {
  console.log('first:', first);
  console.log('second:', second);
  console.log('others:', others);
}

example('リンゴ', 'バナナ', 'メロン', 'スイカ', 'ぶどう');

上記の場合、

  • first'リンゴ'
  • second'バナナ'
  • others['メロン', 'スイカ', 'ぶどう']
    という形で受け取れます。

2.サンプルHTML(実行例)

 以下のコードを「myRestParameters.html」というファイル名で保存し、ブラウザで開いた上で開発者ツールのコンソールを確認してみてください。

【myRestParameters.html】

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="utf-8">
  <title>myRestParameters.html</title>
</head>
<body>
  <h1>残余引数のサンプル</h1>
  <p>ブラウザの開発者ツール(コンソール)を開き、結果を確認してください。</p>

  <script>
    // 残余引数を使って注文をセットする関数
    function setOrder(firstOrder, ...restOrder) {
      console.log('最初の注文:', firstOrder);
      console.log('残りの注文:', restOrder);
    }

    // 関数を呼び出す(引数の数は自由)
    setOrder('ホットコーヒー', 'アイスラテ', '緑茶', 'オレンジジュース');

    // 別パターンの引数数
    setOrder('カプチーノ');
    setOrder('抹茶ラテ', 'ほうじ茶');
  </script>
</body>
</html>

実行結果

デバックコンソールの出力

最初の注文: ホットコーヒー
残りの注文: ["アイスラテ", "緑茶", "オレンジジュース"]
最初の注文: カプチーノ
残りの注文: []
最初の注文: 抹茶ラテ
残りの注文: ["ほうじ茶"]
  • 最初の引数 firstOrder は文字列として受け取り、...restOrder が配列として残りの引数をまとめて取得します。
  • 2回目の呼び出しでは引数が1つしかないため、残りの注文が空配列 [] になります。

まとめ

  • 残余引数(rest parameters) は、関数が受け取る引数が可変長の場合や、最初の1~2個だけ固定で扱い、それ以降をすべて配列で受け取りたい場合に便利。
  • 残余引数は「...変数名」と書き、パラメータリストの最後に配置しなければならない。
  • 渡された引数は、自動的に配列にまとめられるので、ループや配列メソッドを使って楽に処理できる。

 このように、残余引数を活用すると、今まで arguments オブジェクトを使っていた処理をより簡潔で読みやすいコードに置き換えることができます。特定の要素数だけ固定で使い、あとはまとめて配列で持っておきたいというケースで重宝する仕組みです。