偏函数

所谓偏函数,就是固定一个函数的一个或者多个参数,返回一个新的函数,这个函数用于接受剩余的参数。听起来可能有点迷糊,没事,咱们慢慢来~ 
首先,我们来看一个简单的例子,下面只是一个普普通通的函数,

function add(a,b){
    return a + b;
}
console.log(add(1,2));//结果3
console.log(add(1,3));//结果4
console.log(add(1,4));//结果5
console.log(add(1,5));//结果6
console.log(add(1,6));//结果7
console.log(add(1,7));//结果8
1
2
3
4
5
6
7
8
9
不知道大家有没有发现,往add()传入的第一个参数全都是相同的,也就是1,对于这样相同的参数,我们已经重复输入了6次。参数少的情况还好办,那参数多的时候就非常不方便了,请往下看:

function add(a,b,c,d,e){
    return a + b + c + d + e;
}
console.log(add(1,2,3,4,5));
console.log(add(1,2,3,1,2));
console.log(add(1,2,3,3,5));
console.log(add(1,2,3,2,11));
console.log(add(1,2,3,3,8));
console.log(add(1,2,3,7,5));
1
2
3
4
5
6
7
8
9
那么有没有什么办法可以让我们对于相同的参数,只输入一次(也就是把他们固定住),对于其他的参数在调用的时候输入就行了呢?答案是肯定的(不然接下来我还怎么扯淡~),它就是本文的主角–偏函数!

揭开偏函数的神秘面纱 
就像上面我所说的一样,偏函数是固定一个函数的一个或多个参数,然后返回一个新函数,所以我们可以定义一个函数,把它命名为partial,这个函数就相当于一个工厂,需要接受一个入参函数,这个工厂用来生产偏函数,按照这个思路,可以写出大概的构架如下:
//入参函数
function add(a,b){
    return a + b;
}
//生产偏函数的工厂,接受一个入参函数,返回一个新的函数,用于接受剩余的参数
function partial(fn,a){
    return function(b){
        return fn(a,b);
    }
}
1
2
3
4
5
6
7
8
9
10
既然生产偏函数的工厂返回了一个新的函数,所以就用一个变量去接受这个函数,然后在调用该函数的时候再把剩下的参数传入即可。具体代码如下:

//入参函数
function add(a,b){
    return a + b;
}
//生产偏函数的工厂
function partial(fn,a){
    return function(b){
        return fn(a,b);
    }
}
var parAdd = partial(add,1);//变量parAdd接受返回的新函数
console.log(parAdd(2));//在调用的时候传入剩余的参数
console.log(parAdd(3));//在调用的时候传入剩余的参数
console.log(parAdd(4));//在调用的时候传入剩余的参数
console.log(parAdd(5));//在调用的时候传入剩余的参数
这里运行的步骤是 首先当 2 传进去的时候 首先 add = 2传进去了 传给了 return function(b) 这个函数的形参 b 这个时候 b==2了 把 a=1 b =2 传进了函数 fn中 也就是 add中 第一次得出结果是3 以此类推
原文:https://blog.youkuaiyun.com/qq_42129063/article/details/81874314 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值