JavaScript 関数のカリー化 (currying) サンプルコード
- 2019 10/31
- カテゴリー : 未分類
- JavaScript
- コメントを書く
関数のカリー化 (currying) を JavaScript (ES5/ES6) で書いたサンプルコードをご紹介します。
関数のカリー化 JavaScript サンプルコード
function resultFn に value method を定義して、関数自体を return resultFn; で返してるのがポイントです。
関数もオブジェクトなので function resultFn も var resultFn でもオブジェクトなので、それに resultFn.result = function () {} と result method を定義できます。
参考:関数もオブジェクトである – JavaScriptの関数とメソッド:CodeZine(コードジン)
関数のカリー化 (currying) ES5
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;
}
関数のカリー化 (currying) ES6 (ES2015)
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 method 実行結果
> add(2)(3)(4).result
[Function]
> add(2)(3)(4).result()
9
以上、JavaScript で関数のカリー化 (currying) のサンプルコードを書いてみた、現場からお送りしました。
参考情報
- Currying in JS: Answering the traditional question, Add(2)(3), which gives sum of both numbers.
- メソッド定義 – JavaScript | MDN
- Method definitions – JavaScript | MDN
- テックノート – JavaScriptの関数とメソッドの違いについて