第三篇 手写原理代码 - 函数【 实现函数柯里化】

函数柯里化是一种将多个参数的函数转换为接受一个单一参数(最初函数的第一个参数)的函数的技术,并返回一个新函数的过程。这个新函数接受余下的参数,并返回最终结果。因此,函数柯里化可以让函数变得更加复杂,同时也提高了函数的可复用性和普适性

具体来说,函数柯里化把一个 n 个参数的函数 f(x1, x2, ..., xn) 转换成一个嵌套的一元函数的形式 f(x1)(x2)(...)(xn)。这种嵌套的函数形式使得在每个阶段都可以进行必要的计算和处理,从而提高了程序的灵活性和处理效率

嵌套的函数看起来并不是很复杂,但在实际情况下,可能需要传入更多的参数,从而创建更加复杂的嵌套函数。例如,可以使用函数柯里化对接收各种类型的数据的函数进行通用化处理。这可以让我们编写更少的代码,并将重点放在逻辑的实现上,而不是在数据的处理方式上

总之,通过函数柯里化,我们可以将一些常见的结构和模式抽象出来,并使其更容易重复使用和灵活调整。这使得我们的代码更简洁、易于理解和维护

实现函数柯里化

function curryization(fn, params) {
  const lth = fn.length; // 1、获取函数参数长度

  params = params || []; // 2、接收参数

  return function (...args) {
    const newArgs = params.concat(args); // 3、收集 fn 函数的参数
    if (newArgs < lth) {
      return curryization.call(this, fn, newArgs); // 4、小于 递归调用
    } else {
      return fn.apply(this, newArgs); // 5、否则 调用 fn
    }
  };
}

使用

function fn_init(a, b, c) {
  console.log("函数柯里化", a * b * c); // 24
}

const curryFunc = curryization(fn_init);

console.log("curryFunc(2)(3, 4);", curryFunc(2)(3, 4));
posted @ 2023-04-11 23:08  caix-1987  阅读(56)  评论(0)    收藏  举报