質問: [1, 2, 3, 4, 5]; console.log( sum(arr) ); // 15 ``` elm自体が特別な引数ではなく、aでもbでも結果が同じであることは確認しました。
回答: > > 2行目のvar sum = 0; というコードはなぜ必要なのでしょうか。 > > > sumに数が入っていないと計算できないからです。 `□ + 1`は計算できないですが`0 + 1`は計算できますよね。 > > コード中のelmという引数は、代入されることもなく > > > `[1, 2, 3, 4, 5]`が左から順番に`elm`に代入されています。 > > 4行目のsum += elm が、sum = sum + elm > > > `sum += elm` は `0 + 1 = 1` `1 + 2 = 3` `3 + 3 = 6` `6 + 4 = 10` `10 + 5 = 15`となり、(一番左の数値がsum) `sum = sum + elm` は**結果をsumに代入する**ので右辺の `0 + 1` `1 + 2` `3 + 3` `6 + 4` `10 + 5`をsumに入れるので`sum += elm`と 同じ結果になると考えるとわかりやすいです。