JavaScriptのレストパラメータ(残余引数)とは?基本と使い方をわかりやすく解説
ES6(ECMAScript 2015)で導入されたレストパラメータ(rest parameter/残余引数)は、可変長の引数を扱う際に開発者の負担を大きく軽減してくれる機能です。従来はargumentsオブジェクトを使って引数を取得していましたが、レストパラメータを使えば、より直感的で読みやすいコードを書けるようになります。
レストパラメータの基本構文
レストパラメータは、パラメータ名の前に3つのドット(...)を付けて表します。これにより、関数に渡された複数の引数が1つの配列としてまとめられます。
function addition(...numbers) {
// numbers は配列として受け取れる
}サンプルコード
実際に、レストパラメータを使って任意の個数の数値を合計する関数を見てみましょう。
<html>
<body>
<script>
function addition(...numbers) {
var res = 0;
numbers.forEach(function (number) {
res += number;
});
return res;
}
document.write(addition(3));
document.write(addition(5,6,7,8,9));
</script>
</body>
</html>実行結果
3 35
この例では、addition(3)のように引数が1つでも、addition(5,6,7,8,9)のように5つでも、同じ関数で柔軟に処理できます。渡されたすべての引数が配列numbersに格納され、forEachで順番に加算される仕組みです。
レストパラメータを使うメリット
- 配列として扱える:
argumentsオブジェクトとは異なり、本物のArrayなのでmapやfilter、reduceなどの配列メソッドをそのまま使えます。 - コードが読みやすい:関数のシグネチャを見るだけで、可変長引数を受け取る意図が明確になります。
- アロー関数でも使える:アロー関数には
argumentsオブジェクトが存在しませんが、レストパラメータなら問題なく利用できます。
注意点
レストパラメータは必ずパラメータリストの最後に配置する必要があります。途中に置くと構文エラー(SyntaxError)になります。
// OK:通常の引数の後に配置
function sample(a, b, ...rest) { }
// NG:SyntaxError になる
function sample(a, ...rest, b) { }このように、レストパラメータを活用することで、引数の個数に左右されない柔軟な関数を簡潔に実装できます。
-
JavaScriptのPromiseとは?非同期処理の基本をわかりやすく解説
JavaScriptのPromiseとは?Promise(プロミス)は、JavaScriptで非同期処理を扱うためのオブジェクトです。Promiseが生成された時点では、最終的な結果の値はまだ確定していません。処理が完了した将来のタイミングで、成功または失敗の結果を受け取ることができます。これにより、APIからのデータ取得やファイル読み込みなど、時間のかかる処理を効率的に記述できます。Promiseの3つの状態Promiseは、必ず以下の3つの状態のいずれかを持ちます。pending(待機):初期状態。処理がまだ完了していない状態です。fulfilled(履行):処理が正常に完了し、結果の値が
-
JavaScriptの部分関数(Partial Function)とは?仕組みと実装例をわかりやすく解説
部分関数(Partial Function)とは、既存の関数を引数として受け取り、それに加えて別の型の引数も同時に受け取れるようにする仕組みです。まず渡された引数の一部を使い、残りの引数を受け取る新しい関数を返します。そして、返された関数が呼び出されるときに、あらかじめ固定しておいた引数とそのときに渡された引数をすべて組み合わせて、元の親関数が実行されます。 この手法は「部分適用(Partial Application)」とも呼ばれ、関数型プログラミングの基本的なテクニックのひとつです。共通する引数を先に束縛しておくことで、処理の再利用性やコードの可読性を高めることができます。 コード例 以下