function curry(fn){ const fnArgsLength=fn.length let args=[] function calc(...newArgs){ args=[...args,...newArgs] if(args.length<fnArgsLength){ //参数不够,返回函数 return calc }else { //参数够了,返回执行结果 return fn.apply(this,args.slice(0,fnArgsLength)) } } return calc } function add(a,b,c){ return a+b+c } const curryAdd=curry(add) const res1=curryAdd(10)(20)(30) console.log(res1)