JavaScriptで以下のようなコードに出くわして少し悩んでしまったので、自分なりの理解の仕方をまとめておく。
const a = b => c => b + c;
console.log(a(15)(21)); //36が表示される
まず、aはbという引数を一つ取りc => b + c;という関数(アロー関数)を返す関数であることが分かる。従って以下のように書き直してみる。
function a(b) {
return function(c) { //クロージャー
return b + c;
};
}
const fn = a(15);
console.log(fn(21)); //36が表示される
関数a内から返される関数は引数bを参照しているクロージャーであることが分かる。
コメント