4

Javascript 允许我们编写函数,使用它们的参数来构建和返回另一个(通常是匿名的)具有特定行为的函数。咖喱就是一个例子。

为了说明,这种方法可以用来优雅地对任意属性上的对象数组进行排序:

var sortOn = function(property) {
  return function(a,b) {
    return a[property].localeCompare(b[property]);
  };
};
var myArray = [ {id:1, title:'Hello'}, {id:2, title:'Aloha'} ];
myArray.sort( sortOn('title') ); // Aloha, Hello
myArray.sort( sortOn('id') );    // Hello, Aloha

一般来说,是否有一个 Javascript 函数的词,它根据其参数返回另一个函数?

4

2 回答 2

3

返回函数的函数称为高阶函数。

这是一个功能性概念,主要用于将做某事的部分抽象为更小的部分,从而更快地高效、干净地编码。

您的函数是一个高阶函数,因为它返回一个从其参数创建闭包的函数 - 就这么简单。高阶函数也可以是通过一个函数返回某些东西的函数,该函数使用另一个函数的结果作为参数来生成结果。

仿函数只是函数对象的同义词——也就是说,您可以像传递任何普通变量一样传递函数。在 JavaScript 中,所有函数(无论是声明的、匿名/命名函数表达式,还是使用函数构造函数甚至内置函数创建的函数)都可以作为普通变量传递,因此 JavaScript 中的函数是一等对象。但是,这并不真正适用于您的函数,因为您正在返回一个函数,而不是将函数作为参数传递。

于 2013-10-07T23:35:32.347 回答
2

通常在计算机科学中,对作为输入或输出的函数进行操作的函数称为“高阶函数”。

于 2013-10-07T23:37:48.510 回答