Node.jsのアロー関数に慣れる
日付 タグ node.js カテゴリ node.js目次
アロー関数で関数を定義する
これはNode.jsだけに限った話ではなくJavaScriptでの仕様であるが、Node.jsを勉強していると、サンプルコードでも良くアロー関数で定義された関数が出てくる。
自分のようにもともとCやC++畑出身だと最初はとっつきにくい感じがするかもしれない。いま一度復習としてアロー関数の定義の仕方を見ておこう。
関数宣言と関数リテラル
よくある関数の定義の例。xとyの引数に対して和を計算して返す簡単な関数。
普通の関数宣言
function addfunc(x, y) {
return x + y;
};
console.log(addfunc(2,3));
これと同等の処理を、変数に無名関数を代入する関数リテラルでも実現できる。
関数リテラルを使った場合
let addfunc = function(x, y) {
return x + y;
};
console.log(addfunc(2,3));
アロー関数で関数リテラルをより簡潔に書く
アロー関数はこの関数リテラルをより簡潔に書く記法である。
今しがた見てきた、和を計算する関数と同じことを、いちいちfunctionと書かないでアロー関数での定義の仕方を用いて、
アロー関数を使った場合
let addfunc = (x, y) => {
return x + y;
};
console.log(addfunc(2,3));
と書ける。
さらにこの関数では関数内の処理がx+yを計算してそのままreturnする一文だけなので、
関数本体が一文の場合の簡略したアロー関数
let addfunc = (x, y) => x + y;
console.log(addfunc(2,3));
という感じで簡潔に書くことも可能である。
引数が1つの場合のアロー関数
では、引数が1つの場合はどうなるか?
だが、先ほどと同じようにアロー関数を書いてもOKである。
関数本体を{}で囲うアロー関数
let doublefunc = (x) => {
return x*2;
}
console.log(doublefunc(3));
あるいは関数本体の{}を省略した本体一文のアロー関数でもOK。
let doublefunc = (x) => x*2;
console.log(doublefunc(3));
さらに引数が1つの時に関しては引数の()を省略可能で以下のようにも書ける。
let doublefunc = x => x*2;
console.log(doublefunc(3));
引数がない場合のアロー関数
では、引数がない場合はアロー関数はどうなるのか?
という疑問が湧くが、引数が無い場合は、引数の()は省略不可で、
let hellofunc = () => {
return 'hello';
}
console.log(hellofunc());
のようになる。
アロー関数の基本的な書き方は以上である。
アロー関数と通常の関数宣言ではthisの扱い方やnewできる/できないの違いがあったりするが、Node.jsの勉強で最初にサンプルコードなどを見る範囲で必要になる、上記の基本記法をまずはマスターしておけば良いだろう。