函数柯里化实现


函数柯里化(currying)


函数柯里化currying又称为部分求值,一个currying的函数会先接受一些参数,接收了这些参数以后,该函数并不会立即求值,而是继续返回另外一个函数,刚才传入的参数在函数形成的闭包中被保存,待函数真正需要求值的时候,之前传入的所有参数都会被一次性的用于求值。




var
currying=function(fn){ var args=[]; return function(){ if(arguments.length>=1){ [].push.apply(args,arguments);//其实这里有没有返回值不是必须的 return arguments.callee; return fn; }else{ return fn.apply(this,args); } }; }; function cost(){ var money=0; for(var i=0;i<arguments.length;i++){ money+=arguments[i]; } console.log(money); return money; } var cost=currying(cost); cost(200);//未真正求值 cost();//进行真正求值

 

posted on 2017-11-29 12:12  andyroyal  阅读(39)  评论(0)    收藏  举报

导航