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函数是否有一个单词,根据其参数返回另一个函数?
答案 0 :(得分:3)
返回函数的函数称为高阶函数。
这是一个功能概念,主要用于将做某些事情的部分抽象为较小的部分,从而使编码更加快速有效和干净。
你的函数是一个更高阶函数,因为它返回一个函数,从它的参数创建一个闭包 - 就这么简单。高阶函数也可以是通过函数返回某个函数的函数,该函数使用作为参数给出的另一个函数的结果来生成结果。
函子只是函数对象的同义词 - 也就是说,您可以传递函数,就好像它是任何普通变量一样。在JavaScript中,所有函数(无论是声明的,匿名/命名的函数表达式,还是使用函数构造函数或甚至内置函数创建的函数)都可以作为普通变量传递,因此JavaScript中的函数是第一类对象。但这并不适用于您的函数,因为您正在返回一个函数,而不是将函数作为参数传递。
答案 1 :(得分:2)
在计算机科学中,通常将函数作为输入或输出操作的函数称为“高阶函数”。