Old Sunset Days

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の勉強で最初にサンプルコードなどを見る範囲で必要になる、上記の基本記法をまずはマスターしておけば良いだろう。