では「引数の数に応じて処理を変える関数」を一緒に作ってみましょう。
お題
- 引数が 1つ → その値を 2倍
- 引数が 2つ → 2つを 掛け算
- 引数が 3つ以上 → 全部を 掛け算
コード例(arguments を使う場合)
function smartMultiply() {
if (arguments.length === 1) {
return arguments[0] * 2;
} else if (arguments.length === 2) {
return arguments[0] * arguments[1];
} else {
let result = 1;
for (let i = 0; i < arguments.length; i++) {
result *= arguments[i];
}
return result;
}
}
console.log(smartMultiply(5)); // 10 (2倍)
console.log(smartMultiply(2, 3)); // 6 (掛け算)
console.log(smartMultiply(2, 3, 4)); // 24 (全部掛け算)
JavaScriptコード例(rest パラメータを使う場合)
function smartMultiply(...nums) {
if (nums.length === 1) {
return nums[0] * 2;
} else if (nums.length === 2) {
return nums[0] * nums[1];
} else {
return nums.reduce((total, n) => total * n, 1);
}
}
console.log(smartMultiply(5)); // 10
console.log(smartMultiply(2, 3)); // 6
console.log(smartMultiply(2, 3, 4)); // 24
JavaScript✅ ポイント
argumentsは「古い書き方」だけど、既存コードを読むときに役立つ。rest(...nums) は「新しい書き方」で、配列メソッドが使えるので便利。- どちらも「引数の数に応じて処理を変える」ことができる。


