教你实现一个函数柯里化,你学废了吗

函数柯里化指的是一种将使用多个参数的一个函数转换成一系列使用一个参数的函数的技术

function curry(fn,args){
	//获取函数需要的参数长度
	let length=fn.length;
	args=args||[];
	return function(){
		let subArgs=args.slice(0);
		//拼接得到现有的所有参数
		for(let i=0;i<arguments.length;i++){
			subArgs.push(arguments[i])
		}
		//判断参数的长度是否已经满足函数所需参数的长度
		if(subArgs.length>=length){
			// 如果满足,执行函数
			return fn.apply(this,subArgs);
		}else{
			// 如果不满足,递归返回科里化的函数,等待参数的传入
			return curry.call(this,fn,subArgs);
		}
	}
}
//es6版本柯里化
function curry(fn,...args){
	return fn.length<=args.length? fn(...args):curry.bind(null,fn,...args)
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值