柯里化实现

什么是柯里化

  • 函数柯里化(curry)是函数式编程里面的概念:只传递给函数一部分参数来调用它,让它返回一个函数去处理剩下的参数。
  • 每次调用函数时,只接受一部分参数,并返回一个函数,直到传递所有参数为止。
  • 柯里化,不可变数据类型,纯函数等都是函数式编程中的概念。
  • 工具函数生成柯里化函数思路:判断当前传入函数的参数个数是否大于等于原函数所需参数个数,如果是,则执行当前函数;如果是小于,则返回一个函数。
const definerCurry = (func,...args)=>{
	//获取参数个数
	const fnLen = func.length
	return (...args)=>{
	     // 搜集参数
		innerArgs = args.concat(innerArgs)
		//参数未搜集足的话,继续递归搜索
		if(innerArgs.length<fnlen){
           return defineCurry.call(this,func,...innerArgs)
		}else{
		  func.apply(this,innerArgs)
		}
	}
}
const add = defineCurry((num1,num2,num3)=>{
	console.log(num1,num2,num3,num1+num2+num3)
})

add(1)(2)(3)  // 1 2 3 6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值