第一次认识这个词,在我学习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
就是个柯里化函数
柯里化的基础
- 函数可以作为参数传递
- 函数能够作为函数的返回值
- 闭包
柯里化的作用
- 延迟执行:不断的柯里化,累积传入的参数,最后执行。
- 参数复用:当在多次调用同一个函数,并且传递的参数绝大多数是相同的,那么该函数就可以使用柯里化
欢迎指出问题和提出建议哦