Javascript:作为参数,可能性

ΓΓI*_*ICK 1 javascript function

我想知道是否可以在Javascript中执行此类操作:

one(plus(nine())); // returns 10
Run Code Online (Sandbox Code Playgroud)

看起来似乎如此,但我不确定如何将one()的值传递给plus()函数.

Eri*_*ric 13

一个这样的选择是定义(使用箭头函数简洁1):

// creates a function that either returns the number, or forwards the number
// as an argument to the provided function
//   createNumber(10)() == 10
//   createNumber(9)(Math.sqrt) == 3
var createNumber = value => f => f ? f(value) : value;

var one = createNumber(1);
var nine = createNumber(9);

// A very basic curryed implementation of addition
//   plus(1)(2) == 3
var plus = a => b => a + b;
Run Code Online (Sandbox Code Playgroud)

这给出了你所需要的行为

> one(plus(nine())
10
Run Code Online (Sandbox Code Playgroud)

还有一大堆同样被误导但正确的行为

> nine()
9
> nine(plus(one()))
10
> plus(nine())(one())
10
> nine(plus)(one())
10
Run Code Online (Sandbox Code Playgroud)

1:请参阅Vincenzo Maggio关于转换为标准匿名函数的答案