函数柯里化
函数柯里化:将一个接受多个参数的函数转换成多个接受一个参数的函数的过程。
如下:function(a,b,c)
转换成function(a)(b)(c)
实现代码:
function currying(fn){
const args=[];
function _curry(...newArgs){
//接收参数
args.push(...newArgs);
if(args.length>=fn.length){
//返回函数
return fn(..args);
}
//继续接受参数
return _curry;
}
return _curry;
}
应用:
//定义调用函数
function add(a, b, c) {
return a + b + c;
}
const curriedAdd = currying(add);
//单独调用的时候没有问题,连续调用报错
console.log(curriedAdd(1)(2)(3));//输出6
//报错 curriedAdd(...) is not a function
console.log(curriedAdd(1)(2, 3));
console.log(curriedAdd(1, 2, 3));
其他实现方式
function curry(fn) {
return function curried(...args) {
//console.log(fn.length, args.length);
if (args.length >= fn.length) {
return fn.apply(this, args);
} else {
return function (...args2) {
return curried.apply(this, args.concat(args2));
};
}
};
}
原文地址:https://blog.csdn.net/HDdgut/article/details/143080342
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!