関数のカリー化 (currying) を JavaScript (ES5/ES6) で書いたサンプルコードをご紹介します。
function resultFn に value method を定義して、関数自体を return resultFn; で返してるのがポイントです。
関数もオブジェクトなので function resultFn も var resultFn でもオブジェクトなので、それに resultFn.result = function () {} と result method を定義できます。
参考:関数もオブジェクトである - JavaScriptの関数とメソッド:CodeZine(コードジン)
function resultFn 関数の例
function add(x) {
var sum = x;
function resultFn(y) {
sum += y;
return resultFn;
}
resultFn.result = function () {
return sum;
};
return resultFn;
}
var resultFn = function (y) {} メソッドの例
function add(x) {
var sum = x;
var resultFn = function (y) {
sum += y;
return resultFn;
};
resultFn.result = function () {
return sum;
};
return resultFn;
}
function resultFn 関数の例
function add(x) {
let sum = x;
function resultFn(y) {
sum += y;
return resultFn;
}
resultFn.result = function () {
return sum;
};
return resultFn;
}
const resultFn = (y) => {} メソッドの例
function add(x) {
let sum = x;
const resultFn = (y) => {
sum += y;
return resultFn;
};
resultFn.result = function () {
return sum;
};
return resultFn;
}
> add(2)(3)(4).result
[Function]
> add(2)(3)(4).result()
9
以上、JavaScript で関数のカリー化 (currying) のサンプルコードを書いてみた、現場からお送りしました。