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



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

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

我的意思是,像这样的简单函数有什么问题:

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

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

返回CCD_ 1调用的结果。而bind应该返回一个新的函数,该函数在被调用时将在适当的上下文中调用(object)。

示例中的好处是您可以获得部分应用程序:

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

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

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

  1. 哪个对象
  2. 调用哪个方法
  3. 要提供给该方法调用的参数

使用bind,您可以决定1和2,而将3留给以后。

请参阅Undercore,以获得另一个将部分应用程序推广到this之外的示例。

最新更新