JavaScriptにおけるrest演算子

このレッスンは、いくつかの説明から始めましょう。 このセクションのこれまでのすべてのレッスンで、 私は演算子...についてすべてを話していませんでした。

実際には、この演算子はコード内での位置によって、 spread演算子またはrest演算子と呼ばれます。

すでにご存知のように、spread演算子が配列や文字列の前に置かれると、 それらを個々の値に分割します。Rest演算子は、 同じ...という構文を持っていますが、別の目的で使用されます。

今からその目的について説明します。 2つのパラメータを受け取る関数があるとします:

javascriptfunction func(a, b) {
  console.log(a);
  console.log(b);
}

関数に余分なパラメータを渡しても、エラーにならないことは すでにご存知でしょう:

javascriptfunc(1, 2, 3, 4, 5);

Rest演算子を使用すると、 すべての余分なパラメータを配列として取得できます。 そのためには、関数に(必ず最後に)もう1つのパラメータを追加し、 その前に3つのドットを書きます:

javascriptfunction func(a, b, ...rest) {
  
}

これら3つのドットがrest演算子であり、変数名は任意ですが、 通常これもrestと呼ぶのが一般的です。

余分なパラメータを指定して関数を呼び出し、 何がパラメータaとbに入り、 何が残りのrestに入るか見てみましょう:

javascriptfunc(1, 2, 3, 4, 5);

function func(a, b, ...rest) {
  console.log(a);    // 1を出力
  console.log(b);    // 2を出力
  console.log(rest); // [3, 4, 5]を出力
}

余分なパラメータがない場合、変数restには 空の配列が記録されます:

javascriptfunc(1, 2);

function func(a, b, ...rest) {
  console.log(a);    // 1を出力
  console.log(b);    // 2を出力
  console.log(rest); // []を出力
}

関数にはパラメータが全くなくても、restを追加することができます。 この場合、関数は任意の数のパラメータで呼び出すことができ、 それらすべてが配列restに入ります:

javascriptfunction func(...rest) {
  console.log(rest);
}