JavaScript柯里化是什么_如何实现函数柯里化?

admin 百科 10
柯里化是将多参数函数转换为单参数函数链的过程,强调逐步收参、延迟执行,每次只接受一个参数直至参数收齐才运行原逻辑,支持预设参数和占位符,用于组合与高阶抽象。

JavaScript柯里化是什么_如何实现函数柯里化?-第1张图片-佛山资讯网

柯里化(Currying)是把一个接收多个参数的函数,转换成一系列只接收一个参数的函数的过程。核心不是“拆参数”,而是“逐步收参、延迟执行”——每次传入一个参数,返回一个新函数,直到参数收齐才真正运行原逻辑。

柯里化的关键特征

它不是简单地用闭包保存参数,而是要满足:
• 每次调用只接受**一个参数**(严格柯里化)
• 返回的函数仍可继续接收下一个参数
• 参数数量确定时(比如原函数有3个参数),第3次调用才触发实际计算
• 支持提前固定部分参数(即“预设”),后续调用只需补全剩余参数

手动实现一个通用柯里化函数

利用函数的 length 属性获取形参个数,再通过闭包递归收集参数:

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) {
      return fn.apply(this, args);
    } else {
      return function(...nextArgs) {
        return curried.apply(this, args.concat(nextArgs));
      };
    }
  };
}

登录后复制

用法示例:

function add(a, b, c) { return a + b + c; }
const curriedAdd = curry(add);
console.log(curriedAdd(1)(2)(3)); // 6
console.log(curriedAdd(1, 2)(3)); // 6
console.log(curriedAdd(1)(2, 3)); // 6

登录后复制

更实用的增强版:支持占位符与重置

真实场景中常需要跳过某个参数(如用 _ 占位),或中途取消当前收集。可用以下思路扩展:

标签: react javascript java app red

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~