<script>
function fn(){
var i,
rult = 0,
len = arguments.length;
for (i=0;i<len ;i++ )
{
rult += arguments[i];
}
return rult;
}
function addfn(fn){//Curry化函数,方法扩展性更强
var slice = [].slice,//存储方法
old_args = slice.call(arguments,1);//存储除fn外多余的参数
return function(){
var new_args = slice.call(arguments);//存储新传入的参数
args = old_args.concat(new_args);// 拼接新数组和旧数组
return fn.apply(null,args); //借用函数fn进行计算
}
}
/*
或者这样写
console.log( addfn(fn,4,5,6,7)(5,1,2,3) )
*/
var newadd = addfn(fn,4,5,6,7);
console.log( newadd(5,1,2,3) );
</script>
何时使用Curry化
当发现使用同一个函数,并且传入的参数都相同,可以使用先存入旧的参数在传入新的参数,旧参数和新参数拼接为一个数组,然后用方法进行运算