Javascript 如何访问Curry函数中上一个函数的结果?

Javascript 如何访问Curry函数中上一个函数的结果?,javascript,currying,arrow-functions,Javascript,Currying,Arrow Functions,我必须编写一个curry函数,它接受一个函数,执行另一个函数,然后通过将最后一个参数作为要计算的值来执行第二个函数 我正在努力解决的问题:如何同时访问第一个函数和最后的值? 到目前为止,我可以通过使用函数语法编写函数并访问this来访问第一个函数 Function.prototype.foo = function(x) { // can't make currying functions by using functions keyword console.log(this, x); }

我必须编写一个curry函数,它接受一个函数,执行另一个函数,然后通过将最后一个参数作为要计算的值来执行第二个函数

我正在努力解决的问题:如何同时访问第一个函数和最后的值?

到目前为止,我可以通过使用函数语法编写函数并访问this来访问第一个函数

Function.prototype.foo = function(x) {
  // can't make currying functions by using functions keyword
  console.log(this, x);
};

(() => 10).foo(1);
当我写一个currying函数时,我可以访问第二个(x)和第三个(y)函数

Function.prototype.bar = x => y => {
  // but also can't access this like in function syntax
  console.log(x, y);
}

// how would I access 10 in bar?
(() => 10).bar(1)(2);
最后一个函数看起来像这样:

someFunc.then(someSecondFunc).then(someThirdFunc)(100)

非常感谢你的帮助

不确定它是否解决了您的问题,但您可以使用function关键字生成curry函数:

Function.prototype.bar = function(x) {
    return function(y) {
        console.log(x, y)
    }
}
我无法实际验证这是否有效:

(function() {return 10}).bar(1)(2)

在任何情况下,ˋthisˋ都是函数,而不是返回值(10),因为函数没有被调用

通过使用curry函数和function关键字,我的答案如下所示:

Function.prototype.then = function(secondFct) {
  const firstFct = this;
  return function(value) {
    return firstFct(secondFct(value));
  }
}

非常感谢您的帮助。

我不知道没有箭头功能我也可以使用currying函数。非常感谢你的帮助!