柯里化: 把接受多个参数的函数转变成接受单一参数的函数,返回接受余下参数并返回结果的新函数。
// 例如:实现add(1)(2)(3)
function add(a) {
return function(b) {
return function(c) {
return a + b + c;
}
}
}
add(1)(2)(3); // 6
// 多参数柯里化
const curry = function (fn) {
return function curryFn(...args) {
if (args.length < fn.length) {
return function () {
return curryFn.apply(this, args.concat(Array.from(arguments)));
}
}
return fn.apply(this, args);
}
}
let addCurry = curry(add);
console.log(addCurry(1)(2)(3)); // 6
作用:
1、分步执行,也可以说是延迟执行。
2、参数复用。