一道经典的柯里化题目

169 阅读1分钟

看如下所述的一道题

image.png

显然本题是采用函数柯里化。一定是要采用闭包的。所以基本结构就是函数返回一个函数。观察里面valueOf,因为长度不固定,所以需要在返回的函数上面定义一个求值函数。

function curry(){
     //浅拷贝参数,考虑多个参数同时出现的情况。
    var args = [...arguments]
    let fn = function(){
       let newargs = [...args,...arguments]
       return curry.apply(this,newargs)
    }
    fn.valueOf= function(){
    //递归求值
        return args.reduce((a,b)=>a+b,0)
    }
    
    return fn
}