Javascript 带绑定的部分函数
因此,最近我发现可以使用bind使用js执行部分函数。 例如:Javascript 带绑定的部分函数,javascript,ecmascript-6,bind,currying,partial-application,Javascript,Ecmascript 6,Bind,Currying,Partial Application,因此,最近我发现可以使用bind使用js执行部分函数。 例如: const foo = (a, b, c) => (a + (b / c)) foo.bind(null, 1, 2) //gives me (c) => (1 + (2 / c)) 然而,这只有在你想要咖喱的部分是有序的情况下才有效。如果我想使用bind实现以下功能呢 (b) => (1 + (b / 2)) 尝试了各种解决方案,例如: foo.bind(null, 1, null, 2) 有什么想法吗?使
const foo = (a, b, c) => (a + (b / c))
foo.bind(null, 1, 2) //gives me (c) => (1 + (2 / c))
然而,这只有在你想要咖喱的部分是有序的情况下才有效。如果我想使用bind实现以下功能呢
(b) => (1 + (b / 2))
尝试了各种解决方案,例如:
foo.bind(null, 1, null, 2)
有什么想法吗?使用香草es6是否可以实现这一点?您可以使用包装器对参数进行重新排序
const
foo=(a,b,c)=>a+b/c,
acb=(a,c,b)=>foo(a,b,c);
log(acb.bind(null,1,2)(5))代码>目前我考虑两种实现方法(除了@NinaSholz的包装器,它非常好):
1.使用合并两个参数数组的curry
函数:
constfoo=(a,b,c)=>a+b/c;
函数咖喱(fn,…args){
返回函数(…newArgs){
const finalArgs=args.map(arg=>arg | | newArgs.pop());
返回fn(…最终结果);
};
}
const curriedFoo=curry(foo,1,null,2);
log(curriedFoo(4))//如果使用占位符打印1+4/2=3
,您可以看看这个问题:有一个关于部分应用程序语法的建议