Qraft(クラフト) 資格・学習クイズアプリ

JavaScript入門 練習問題 33:構文:残余引数(レストパラメータ)

次のコードの実行結果として正しいものはどれですか?

```javascript
function sum(...numbers) {
return numbers.reduce((acc, cur) => acc + cur, 0);
}
console.log(sum(1, 2, 3, 4));
```

  1. 10
  2. 24
  3. [1,2,3,4]
  4. NaN
  5. 4

Qraftユーザーの成績:難易度 Bランク(レーティング1213)・正答率 53%(9/17回正解)
レーティングは解いた人の実力と正誤から算出する難しさ(初期値1200)。ランクはその全問題中の順位(S+が最難関、F-が最易)

正解と解説を見る
正解:10

「...numbers」というレストパラメータ(=残余引数、複数の引数を1つの配列としてまとめて受け取る構文)により、渡された4つの引数が配列[1,2,3,4]としてまとめられ、reduceで合計すると10になります。

【正解の理由】
レストパラメータは渡された任意個数の引数を配列としてまとめるため、numbersは[1,2,3,4]となり、reduceで初期値0から順に足し合わせると1+2+3+4=10になります。

【不正解の理由】
• 「24」:1×2×3×4のような掛け算の結果であり、reduceの処理内容(加算)と一致しない
• 「[1,2,3,4]」:これはreduce前の配列そのものであり、reduceによる集計結果ではない
• 「NaN」:引数が数値でない場合に起こりうる結果だが、今回はすべて数値のため該当しない
• 「4」:引数の個数を表す値であり、合計値ではない

← 前の問題問題一覧次の問題 →
アプリで解いてレーティングを上げる(無料・登録不要)