函数柯里化是指将一个多参数函数转化为一系列单参数函数的技术,从而能够更灵活地进行函数组合和重用。在JavaScript中,可以通过以下方式实现函数柯里化:
function curry(fn) {
return function curried(...args) {
if (args.length >= fn.length) {
return fn.apply(this, args);
} else {
return function(...moreArgs) {
return curried.apply(this, args.concat(moreArgs));
};
}
};
}
这个curry函数接收一个函数fn作为参数,并返回一个新的函数,这个新函数接收任意个参数,并在参数达到原函数fn的参数个数时,调用fn并返回其结果;否则返回一个新的函数,这个新函数接收剩余的参数并继续递归调用curried函数,直到参数个数达到fn的参数个数为止。
偏函数是指固定一个函数的一个或多个参数,从而得到一个新的函数的技术。在JavaScript中,可以通过以下方式实现偏函数:
function partial(fn, ...presetArgs) {
return function partiallyApplied(...laterArgs) {
return fn.apply(this, presetArgs.concat(laterArgs));
};
}
这个partial函数接收一个函数fn和一个或多个预设参数presetArgs作为参数,并返回一个新的函数partiallyApplied,这个新函数接收任意个参数,并在调用fn时将预设参数和后续参数合并后作为fn的参数传入。