含义:

把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,
并且返回接受余下的参数且返回结果的新函数的技术。

作用:

惰性求值

实例:


add(1,2,3)=>add(1)(2)(3)


function curry(fn, args = []){
let len = fn.length
return function(...cargs){
args.push(...cargs)
if(args.length < len){
return curry.call(this, fn, args)
}else{
return fn.apply(this, args)
}
}
}

function sum(a, b, c) {
return a + b + c;
}
console.log(curry(sum)(1, 2, 3)); // 6
console.log(curry(sum)(1, 2)(3)); // 6
console.log(curry(sum)(1)(2, 3)); // 6
console.log(curry(sum)(1)(2)(3)); // 6