最近在深入学习js,发现之前自己储备的知识真的是冰山一角,虽然工作上这些不用也能完成任务,但是总感觉自己写的代码很拉跨~~是时候提高自己的代码质量了
下面是菜鸡理解(仅供参考,如果你有更深的理解那就是你对!)
柯里化函数Curry
直奔主题
function curryingAdd(x) {
return function (y) {
return x + y
}
}
curryingAdd(1)(2)
这是一个实现加法的函数,按照普通函数的实现方法 curryingAdd里面直接return x+y 为什么还要return一个函数。按照我的理解,柯里化就是不是一次性把所有参数传入,而是每调用一次return一个函数 再次调用,最后一个返回值就是所期望的值。
那为什么普通函数能够实现的还要这么复杂呢,肯定也是有一定的应用场景,使用柯里化能够减少一点代码冗余度。
使用场景一:减少重复传递不变的部分参数
下面举一个例子吧
我们检测字符串是否存在
普通写法
let goMatch = function(reg,str){
reg.test(str)
}
let result1 = goMatch(/\s+/g,'I am hungry'); //true
let result2 = goMatch(/\s+/g,'metoo!'); //false
柯里化写法
function curryingMatch(reg){
return function(str){
return reg.test(str)
}
}
let result = curryingMatch(/\s+/g);
let isHas = result('my boo');
这样我们就不用每次都传正则匹配进去,而且想实现其他正则匹配判断,也能很好的复用,减少代码冗余度。
待更新…