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

2017-05-26  本文已影响170人  小m_up

第一次认识这个词,在我学习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就是个柯里化函数

柯里化的基础
柯里化的作用

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

上一篇 下一篇

猜你喜欢

热点阅读