解释在简单的英语语言中使用高阶函数的好处

时间:2014-04-15 06:50:55

标签: javascript binding functional-programming

考虑这个例子,我需要知道使用高阶函数的好处:

function bind(func, object) {
  return function(){
    return func.apply(object, arguments);
  };
}

我的意思是这样一个简单函数的问题:

function bind(func, object) {
  return func.apply(object, arguments);
}

2 个答案:

答案 0 :(得分:2)

function bind(func, object) {
    return func.apply(object, arguments);
}

返回func调用的结果。虽然bind应返回 new 函数,但在调用时将在适当的上下文中调用(object)。

答案 1 :(得分:1)

您的示例中的好处是获得partial application

  

直观地,部分函数应用程序说"如果你修复了函数的第一个参数,你得到剩下的参数的函数"。例如,如果函数div代表除法运算x / y,则参数x固定为1(即div 1)的div是另一个函数:与返回乘法逆的函数inv相同它的论点,由inv(y) = 1 / y定义。

     

部分应用的实际动机是,通常通过向函数提供一些但不是所有参数而获得的函数是有用的;例如,许多语言具有与plus_one类似的函数或运算符。部分应用程序可以很容易地定义这些函数,例如通过创建一个函数来表示加法运算符,并将1绑定为第一个参数。

在您的示例中,有三条信息:

  1. 哪个对象
  2. 调用哪种方法
  3. 提供给该方法调用的参数
  4. 使用bind,您可以决定1和2,而稍后再留3。

    请参阅Underscore,了解除this以外的部分应用程序。