函数柯里化实现
函数柯里化(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();//进行真正求值
相信才会最好
浙公网安备 33010602011771号