javascript中的curry函数是否使用了闭包原理?

Rud*_*dra 4 javascript functional-programming currying

如果有人解释咖喱功能的工作,那将是非常有帮助的.我已经阅读了很多例子,但没能正确掌握它.无论如何与封闭有关.

t.n*_*ese 5

Currying只是技术,可以利用任何语言特征(例如闭包)来实现所需的结果,但是没有定义必须使用哪种语言特征.因此,currying不需要使用闭合(但在大多数情况下将使用闭合)

这里有一个关于currying使用的例子,有和没有使用封闭.

随着使用关闭:

function addition(x,y) {
  if (typeof y === "undefined" ) {
    return function (y) {
      return x + y;
    }
  }
  return x + y;
}

var additionRemaining = addition(3); // Currying
additionRemaining(5);//add 5 to 3
Run Code Online (Sandbox Code Playgroud)

使用new Function而不是封闭(部分评估):

function addition(x,y) {
  if (typeof y === "undefined" ) {
    return new Function('y','return '+x+' + y;');
  }
  return x + y;
}

var additionRemaining = addition(3); // Currying
additionRemaining(5);//add 5 to 3
Run Code Online (Sandbox Code Playgroud)