JavaScript柯里化 柯里化也是属于函数式编程里面一个非常重要的概念。 我们先来看一下维基百科的解释:
口在计算机科学中,柯里化(英语:Currying),又译为卡瑞化或加里化;
口是把接收多个参数的函数,变成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数,而且返回结果的新函数的技术;
口柯里化声称“如果你固定某些参数,你将得到接受余下参数的一个函数";
维基百科的结束非常的抽象,我们这里做一个总结:
口只传递给函数一部分参数来调用它,让它返回一个函数去处理剩余的参数;
口这个过程就称之为柯里化;
自动柯里化函数的实现
1 function add1(x,y,z){ 2 return x+y+z 3 } 4 5 //柯里化函数的实现 6 function hyCurrying(fn){ 7 function curried(...args){ 8 // 判断当前已经接收的参数的个数,可以参数本身需要接受的参数是否已经一致了 9 // 1.当已经传入的参数 大于等于 需要的参数时,就执行函数 10 if(args.length>=fn.length){ 11 // fn(...args) 12 // fn.call(this,...args) 13 return fn.apply(this,args) 14 }else{ 15 //没有达到个数时,需要返回一个新的函数,继续来接收的参数 16 function curried2(...args2){ 17 //接收到参数后,需要递归调用curried来检查函数的个数是否达到 18 return curried.apply(this,args.concat(args2)) 19 } 20 return curried2 21 } 22 } 23 return curried 24 } 25 26 var curryAdd=hyCurrying(add1) 27 console.log(curryAdd(10,20,30)) 28 // curryAdd(10,20)(30) 29 // curryAdd(10)(20)(30)
标签:return,函数,args,参数,柯里化,自动,fn From: https://www.cnblogs.com/KooTeam/p/17644643.html