2013-10-07 57 views
3

Javascript允许我们编写使用其参数的函数来构建并返回具有特定行为的另一个(通常是匿名的)函数。 Currying就是一个例子。是否有返回函数的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函数的单词另一个功能?

回答

3

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

这是一个功能概念,主要用于将某些部分的东西抽象成较小的位,从而使代码高效且干净地更快。

您的函数是一个更高阶的函数,因为它返回一个函数,该函数根据参数创建一个闭包 - 这很简单。更高阶的函数也可以是一个函数返回的东西,它使用另一个函数的结果作为参数来产生结果。

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

+1

使用术语“仿函数”时要小心:它在函数式编程中有多个不相关的含义。 –

+0

@MattFenwick:虽然是真的,但我试图按照给出的上下文给出它。 –

2

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