在前端中函数柯里化的妙用~

前言:

在使用它之前我们需要先了解什么是柯里化?

所谓的柯里化不过就是将多个固定的参数生成一个新动态的调用函数,这句话看起来有点绕!但是我们理解清楚后就不会有这种感觉~

在某些场景中我的执行函数是固定参数才会执行的,但是这些参数取数又不是一次性的时候你会怎么处理?

我们一个函数有七八个函数,但是我们的函数的某些参数属于固定的,那么我们需要在每次调用的时候去多次传入这些参数吗?

显然这是很冗余的做法!有的人可能会说我可以把固定的参数直接封装起来,直接调用不就好了?

你虽然可用这么做,但是~,如果有多个地方你是不是需要多次去定义调用?

此时我们的柯里化就能很好的帮助你解决这个问题~

 

1.声明柯里化函数

function curry(fn) {
  return function curried(...args) {
    if (args.length >= fn.length) { // 如果传入的参数数量达到了原函数的参数数量,则直接调用原函数
      return fn.apply(this, args);
    } else { // 否则返回一个新的函数,并等待接收更多的参数
      return function(...moreArgs) {
        return curried.apply(this, args.concat(moreArgs));
      }
    }
  };
}

2.实例加法调用柯里化

function add(x, y, z) {
  return x + y + z;
}

const curriedAdd = curry(add);

console.log(curriedAdd(1)(2)(3)); // 6

// 亦或者我们需要前两位参数是固定的?
const curriedAdd = curriedAdd(1)(2);

curriedAdd(3) // 6
curriedAdd(2) // 5
// ....多次调用 

  

posted @ 2023-06-06 11:12  键盘的旋律  阅读(30)  评论(0编辑  收藏  举报