是否有返回函数的javascript函数的名称?

时间:2013-10-07 23:28:59

标签: javascript functional-programming nomenclature

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

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

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函数是否有一个单词,根据其参数返回另一个函数?

2 个答案:

答案 0 :(得分:3)

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

这是一个功能概念,主要用于将做某些事情的部分抽象为较小的部分,从而使编码更加快速有效和干净。

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

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

答案 1 :(得分:2)

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