封装一个柯里化函数
简化代码的结构。一个函数,只有个参数,强调了功能的单一性,提升代码的复用性
function add(a, b, c) {
return a + b + c;
}
// 封装一个柯里化函数
function curry(fn) {
return function curryFn() {
// 1. 一次性将所有参数传完
// arguments
if (arguments.length < fn.length) {
// 2. 没有一次性传完
var _arg = Array.from(arguments);
console.log(_arg);
return function () {
// 当这个匿名函数被调用时
// 看这一传递进来的参数 + 上一次的参数 === fn.length
return curryFn(...Array.from(arguments).concat(_arg));
}
}
return fn(...arguments);
}
}
var curryFn = curry(add);
// console.log(curryFn(1,2,3));
console.log(curryFn(1, 2)(3));
console.log(curryFn(1)(2,3))