js 对柯里化函数简单理解及应用场景

最近在深入学习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');

这样我们就不用每次都传正则匹配进去,而且想实现其他正则匹配判断,也能很好的复用,减少代码冗余度。

待更新…

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值