JavaScript中的咖喱函数使用闭包原则吗?

如果有人解释咖喱功能的工作,这将是非常有帮助的。 我读过很多例子,但无法正确掌握它。 它是否与关闭有关。


柯里化只是一种技巧,它可以利用任何语言特征(例如闭包)来达到预期的效果,但是它没有定义要使用哪种语言特征。 因为咖喱并不需要使用关闭(但在大多数情况下会使用关闭)

这里有一个使用咖啡的小例子,有和没有使用闭包。

通过使用闭包:

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

使用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
链接地址: http://www.djcxy.com/p/52037.html

上一篇: Does curry function in javascript uses principle of closure?

下一篇: javascript function internal scope