柯里化
将一个接受多个参数的函数转换为一系列使用一个参数的函数;
优势
- 参数复用
- 延迟执行
- 逻辑复用
示例
js
function add(a, b, c) {
return a + b + c;
}
function currey(fn) {
return function exec(...arr) {
if (fn.length <= arr.length) {
return fn.apply(this, arr);
} else {
return exec.bind(this, ...arr);
}
};
}
const t = currey(add);
console.log(t(1)(2, 3));
JStar