大声告诉我什么是柯里化函数

第一次认识这个词,在我学习react-redux的时候,碰到了middlewere以及其函数const middlewere = store=>next=>action {...},刚开始我真的是一脸懵逼,这是个啥?

仔细一看才发现,这不是ES6的箭头函数嘛,就是换了个衣服,我就不认识了,实在是惭愧

那么就先来给它穿衣服吧!
箭头函数中如果只是返回一条语句的话我们可以将{}return值省略,例如:

(a)=>{
      return a;
}

///可以简写成
(a)=>a;

那么同理得出store=>next=>action {...}函数为:

const middlewere = (store)=>{
                       return (next)=>{
                                     return (action)=>{ ... }
                              }
                    }

这样是不是就认识了呢?那么这和柯里化函数有什么关系呢?憋着急,慢慢往下看

柯里化函数

柯里化函数概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
什么意思呢,举个栗子就知道了哇

const concat3Words =  (a, b, c) => {
    return a+b+c;
};

const concat3WordsCurrying = (a) => {
    return (b) => {
        return (c) => {
            return a+b+c;
        };
    };
};

console.log(concat3Words("a","b","c"));  //abc
console.log(concat3WordsCurrying("a")("b")("c"));  //abc

concat3WordsCurrying每次调用都返回一个新的函数,该函数接受另一个调用,然后又返回一个新的函数,直至最后返回结果,分布求解,层层递进,这就是柯里化函数,是不是和上面的middlewere有点像呢,对滴,middlewere就是个柯里化函数

柯里化的基础
  • 函数可以作为参数传递
  • 函数能够作为函数的返回值
  • 闭包
柯里化的作用
  • 延迟执行:不断的柯里化,累积传入的参数,最后执行。
  • 参数复用:当在多次调用同一个函数,并且传递的参数绝大多数是相同的,那么该函数就可以使用柯里化

欢迎指出问题和提出建议哦

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容