回答編集履歴
2
ES2015版を作成
answer
CHANGED
@@ -21,11 +21,8 @@
|
|
21
21
|
}
|
22
22
|
console.log(calcSum(1, 2, 3)); // 6
|
23
23
|
console.log(calcSum(1, 2)); // 3
|
24
|
-
```
|
25
24
|
|
26
|
-
ES2015という新しい書き方では、引数の初期値が宣言出来るようになりました。
|
25
|
+
// ES2015という新しい書き方では、引数の初期値が宣言出来るようになりました。
|
27
|
-
|
28
|
-
```JavaScript
|
29
26
|
function calcSum(a = 0, b = 0, c = 0) {
|
30
27
|
return a + b + c;
|
31
28
|
}
|
@@ -51,10 +48,6 @@
|
|
51
48
|
console.log(calcSum([1, 2, 3, 5, 5])); // 16
|
52
49
|
```
|
53
50
|
|
54
|
-
---
|
55
|
-
|
56
|
-
おまけのおまけ: calcSumを完成させる
|
57
|
-
|
58
51
|
argumentsと配列操作を使ってかっこよく仕上げます。
|
59
52
|
自動的に宣言されるargumentsは配列っぽい変数ですが、配列から継承して作られた存在ではなく、
|
60
53
|
リスト操作のメソッドを使おうとするとエラーが出ます。
|
@@ -71,4 +64,27 @@
|
|
71
64
|
console.log(calcSum(1, 2)); // 3
|
72
65
|
console.log(calcSum(1, 2, 3)); // 6
|
73
66
|
console.log(calcSum(1, 2, 3, 4)); // 10
|
67
|
+
```
|
68
|
+
|
69
|
+
---
|
70
|
+
|
71
|
+
おまけのおまけ!: ES2015をフルに使った場合
|
72
|
+
|
73
|
+
> maisumakun:
|
74
|
+
> babelやNode前提の環境では、(同種の引数を任意個受ける、という状況なら)最後のようにspread引数として宣言しておくのがわかりやすい気もします。
|
75
|
+
|
76
|
+
JSも幾つかバージョンがあり、ES2015という新バージョンでは更に強化した記述が可能になりました。
|
77
|
+
アロー演算子、spread、reduceをフル活用すれば質問文の例題を1行で書けてしまいます。
|
78
|
+
残念ながらIE11では対応していませんが、他のモダンブラウザ全てとNode.jsでは扱えますので調べてみてください。
|
79
|
+
|
80
|
+
IE11に対応する場合、Babelという古いJSのバージョンに戻すソフトを使えば大体動作します。
|
81
|
+
自動化ツールを組んで、書いたコードをデプロイ前にBabelを通して反映するということが可能です。
|
82
|
+
|
83
|
+
```JavaScript
|
84
|
+
const calcSum = (...nums) => nums.reduce((a, b) => a + b, 0)
|
85
|
+
console.log(calcSum()); // 0
|
86
|
+
console.log(calcSum(1)); // 1
|
87
|
+
console.log(calcSum(1, 2)); // 3
|
88
|
+
console.log(calcSum(1, 2, 3)); // 6
|
89
|
+
console.log(calcSum(1, 2, 3, 4)); // 10
|
74
90
|
```
|
1
おまけのおまけ追加
answer
CHANGED
@@ -49,4 +49,26 @@
|
|
49
49
|
console.log(calcSum([1, 2])); // 3
|
50
50
|
console.log(calcSum([1, 2, 3])); // 6
|
51
51
|
console.log(calcSum([1, 2, 3, 5, 5])); // 16
|
52
|
+
```
|
53
|
+
|
54
|
+
---
|
55
|
+
|
56
|
+
おまけのおまけ: calcSumを完成させる
|
57
|
+
|
58
|
+
argumentsと配列操作を使ってかっこよく仕上げます。
|
59
|
+
自動的に宣言されるargumentsは配列っぽい変数ですが、配列から継承して作られた存在ではなく、
|
60
|
+
リスト操作のメソッドを使おうとするとエラーが出ます。
|
61
|
+
|
62
|
+
参考サイト: [[JavaScript] arguments をサクッと配列に変換する方法](http://phiary.me/javascript-arguments-to-array/)
|
63
|
+
|
64
|
+
```JavaScript
|
65
|
+
function calcSum() {
|
66
|
+
var args = Array.prototype.slice.call(arguments);
|
67
|
+
return args.reduce(function(a, b){ return a + b }, 0);
|
68
|
+
}
|
69
|
+
console.log(calcSum()); // 0
|
70
|
+
console.log(calcSum(1)); // 1
|
71
|
+
console.log(calcSum(1, 2)); // 3
|
72
|
+
console.log(calcSum(1, 2, 3)); // 6
|
73
|
+
console.log(calcSum(1, 2, 3, 4)); // 10
|
52
74
|
```
|