ES6のarrow functionは高階関数をシンプルに書けて便利ですが、引数の個数が1個以外のときは、引数の括弧が省略できません。統一感を出すために、arrow functionの引数は必ず括弧で囲むようにした方がいいかもしれません…。
引数が1つの場合
const list = [1, 2, 3];
// functionを使った書き方
list.map(function(a) {
return a * 2;
});
// arrow function
list.map((a) => {
return a * 2;
});
// arrow function(括弧を省略)
list.map(a => {
return a * 2;
});
// arrow function(ブレースとリターンを省略)
list.map((a) => a * 1);
// arrow function(括弧とブレースとリターンを省略)
list.map(a => a * 1);
引数が2つ以上の場合
const list = [1, 2, 3];
// functionを使った書き方
list.reduce(function(acc, num) {
return acc + num;
});
// arrow function
list.reduce((acc, num) => {
return acc + num;
});
list.reduce((acc, num) => acc + num);
// 括弧は省略できない。省略するとaccがreduceの第一引数になってしまう。
list.reduce(acc, num => acc + num);
引数が0個の場合
// functionを使った書き方
setTimeout(function(){
console.log("done");
}, 10);
// arrow function
setTimeout(() => {
console.log("done");
}, 10);
// 暗黙的にreturn console.log("done")と解釈されるので注意
setTimeout(() => console.log("done"), 10);
// 括弧は省略できない。syntax error
setTimeout(=> console.log("done"), 10);