JavaScriptで関数を作るとき、「引数がいくつ渡されるか分からない」という状況に困ったことはありませんか?例えば、合計値を計算する関数を作りたいとき、2つの数字だけでなく、10個でも100個でも足せるようにしたい場合、従来の方法では少し面倒でした。そこで登場するのが、Rest parameters(残余引数)という強力な機能です。
なぜRest parametersが必要なのか
昔のJavaScriptでは、関数に渡された引数をすべて取得するために「arguments」という特殊なオブジェクトを使っていました。しかし、これは使い勝手が悪く、コードが少し読みづらくなるという欠点がありました。Rest parametersを使えば、渡された複数の引数をそのまま「配列」として受け取ることができます。これにより、配列が持つ便利なメソッド(mapやfilterなど)をそのまま活用できるようになるのです。
書き方は「ドット3つ」だけ
Rest parametersの使い方は非常にシンプルです。関数の引数リストの中で、「…(ドット3つ)」を名前の前に付けるだけです。
具体的な事例を見てみよう
例えば、受け取った数字をすべて合計する関数を書いてみましょう。
function sum(…numbers) {
return numbers.reduce((total, num) => total + num, 0);
}
console.log(sum(1, 2, 3)); // 結果は6
console.log(sum(10, 20, 30, 40)); // 結果は100
このように、引数を「…numbers」とすることで、渡された引数がすべて「numbers」という名前の配列に格納されます。これなら、引数が何個あっても柔軟に対応できますよね。
注意すべきポイント
便利なRest parametersですが、一つだけ覚えておくべきルールがあります。それは、「Rest parametersは必ず引数リストの最後に書く」ということです。もし「…args, last」のように書いてしまうと、プログラムは「残りはどれ?」と混乱してエラーになってしまいます。
また、Rest parametersはあくまで「配列」として扱うため、ループ処理や集計処理が非常に書きやすくなるのが最大のメリットです。ぜひ、引数の数が決まっていない汎用的な関数を作る際に活用してみてください。この書き方に慣れると、コードが驚くほどスッキリと洗練されたものになりますよ。