函数柯里化
把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。
函数柯里化的作用
参数复用,就是起到固定参数的作用
比如:
function regTest(reg, txt){
retrun reg.test(txt);
}
console.log(regTest(/\d+/g, '123'));
console.log(regTest(/\d+/g, 'test'));
上面的正则校验函数,如果正则一样,每次都需要重新传值。通过函数柯里化后,只需要传需要匹配的参数即可
通用型柯里化函数
/**
* 通用型柯里化函数
* @param {*} func 执行函数
* @param {...any} args 接收参数
* @returns
*/
function curry(func, ...args) {
if(args.length >= func.length){
return func.apply(this, args);
} else {
const _curry = function(...restArgs) {
const newArgs = [...args, ...restArgs];
if(newArgs.length >= func.length){
return func.apply(this, newArgs);
} else {
return _curry;
}
}
return _curry;
}
}