函数柯里化

###柯里化概念 通过把一个多参函数转换成一系列嵌套的函数,每个函数依次接受一个参数,这就是函数柯里化。 参数降维(不为单一参数为偏函数)为一元

const _fn=curry(function(a,b,c,d){return a+b+c+d;});
function curry(fn,len=fn.length){
    return _curry.call(this,fn,len);
}
function _curry(fn,len,...args){
    return function(...params){
        let _args=[...args,...params];
        if(_args.length>=len){
            return fn.apply(this,_args);
        }else{
            return _curry.call(this,fn,len,..._args);
        }
    }
};


_fn(1,2,3)(4);//10
_fn(1,2)(3,4);//10
_fn(1)(2)(3)(4);//10