看如下所述的一道题
显然本题是采用函数柯里化。一定是要采用闭包的。所以基本结构就是函数返回一个函数。观察里面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
}