
Каррирование
Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как
Пример
Когда она вызывается как sum(1), аргумент сохраняется в лексическом окружении и возвращается новая обёртка function(b).
Далее уже эта обёртка вызывается с аргументом 2 и передаёт вызов к оригинальной функции sum.
Каррирование – это трансформация функций таким образом, чтобы они принимали аргументы не как
f(a, b, c)
, а как f(a)(b)(c).
Оно не вызывает функцию. Оно просто трансформирует её.Пример
function curry(f) {
return function(a) {
return function(b) {
return f(a, b);
};
};
}
// использование
function sum(a, b) {
return a + b;
}
let carriedSum = curry(sum);
alert( carriedSum(1)(2) ); // 3
Результат curry(func) – обёртка function(a).Когда она вызывается как sum(1), аргумент сохраняется в лексическом окружении и возвращается новая обёртка function(b).
Далее уже эта обёртка вызывается с аргументом 2 и передаёт вызов к оригинальной функции sum.