柯里化
柯里化(Currying)是函数式编程中的一种高阶技术,其核心思想是将一个接受多个参数的函数转换为一系列接受单一参数的函数链,每个新函数返回处理剩余参数的新函数,直到所有参数收集完毕并最终执行原函数。以下是其核心要点:
一、柯里化的核心原理
-
参数逐步收集 柯里化函数通过闭包保存已传入的参数,并逐步收集剩余参数。例如:
// 原函数:接受3个参数
const add = (a, b, c) => a + b + c;
// 柯里化后
const curriedAdd = a => b => c => add(a, b, c);
console.log(curriedAdd(1)(2)(3)); // 6每次调用返回一个新函数,直到所有参数满足原函数的要求。
-
闭包与递归实现 柯里化的实现依赖闭包保存中间状态,并通过递归或条件判断 参数是否足够。例如:
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn(...args);
} else {
return (...nextArgs) => curried(...args, ...nextArgs);
}
};
}