时钟来源https://www.mpyit.com

 

 

function curry(fn){
    var args=Array.prototype.slice.call(arguments)  //转真数组
    var len=fn.length   //fn形参数
    return function (){
        var argus=Array.prototype.slice.call(arguments)  //转数组
        var parameter=args.concat(argus)     //总参数数组

        if(parameter.length<len+1){ //parameter 参数多一个fn,所以len+1,兼容一下
            return curry.apply(null,parameter) 
        }else{
            parameter.shift() //把第一个参数fn删除
            return fn.apply(null,parameter)
        }
    }
}

var cur = curry(add, 1, 2)

function add(a, b, c, d) {
    return a + b + c + d
}
var s = cur(3)
console.log(s(4));


console.log(cur(4,5));

 


 
ES6

function
curry(fn, ...args){
var len=fn.length

  
return function (...v){ var arr=[...args, ...v] if(arr.length < len){ return curry(fn, ...arr) }else { return fn(...arr) } } }
function add(a, b, c, d) {

    return a + b + c + d

}
var cur = curry(add, 1, 2)

 
var s = cur(3)
 
console.log(s(4));   //10
 

 

posted on 2020-08-30 23:31  &ltbai&gt  阅读(79)  评论(0)    收藏  举报