柯里化
定义
柯里化Currying是一种将接收多个参数的函数转换为接收一个参数的函数,并返回接收下一个参数的新函数的技术。简单来说,柯里化是将多元函数转换为一系列一元函数(每个函数只接受一个参数)的过程。
柯里化的意义:
1、让纯函数更纯,每次接受一个参数,松散解耦
2、惰性执行
作用
1、参数复用:可以将某些固定的参数提前传入,生成一个新的函数,剩下的参数可以在稍后调用时再传递
2、延迟计算:将函数调用分成多个步骤,逐步传入参数,最终才执行
3、代码复用:通过柯里化,可以产生更灵活和可复用的函数
示例
js
let fn = (x, y) => x + y;
// 转化
const curry = function (fn) {
return function (x) {
return function (y) {
return fn(x, y);
};
};
};
let myfn = curry(fn);
console.log(myfn(1)(2));
// 多参数
const curry = function (fn) {
return function curriedFn(...args) {
if (args.length < fn.length) {
return function () {
return curriedFn(...args.concat([...arguments]));
};
}
return fn(...args);
};
};
const fn = (x, y, z, a) => x + y + z + a;
const myfn = curry(fn);
console.log(myfn(1)(2)(3)(1));