5

我正在尝试使用 Lodash 和 compose 使用 Javascript 的更实用的样式。我注意到我有时需要一个返回值的函数。所以想知道这叫什么,所以我可以找出 Lodash 是否真的有这个方法。

var returnFn = function (i) {
  return function () {
    return i;
  };
};

例子:

_.compose(doSomething, returnFn({ foo: 'bar' });

代替:

_.compose(doSomething, function () {
    return { foo: 'bar' };
});
4

3 回答 3

5

你怎么称呼一个接受一个值并返回一个返回该值的函数的函数?

你所拥有的似乎是一个柯里化的 身份函数,在 Haskell 中被称为const. 因为它返回一个函数,所以它是一个高阶函数,也可能称为函数工厂。返回的函数 - 一个常量函数- 是一个闭包,因为它可以访问外部函数的参数。

所以我可以找出 Lodash 是否真的有这个方法。

不,它没有。但是,您可以通过_.binding _.partial函数轻松地自己编写它_.identity

var returnFn = _.bind(_.partial, null, _.identity);

不过,您的简单实现会快很多……</p>

_.compose(doSomething, returnFn({ foo: 'bar' }));

你在那里做只是部分应用,你不应该使用compose它。一起去

_.partial(doSomething, {foo: 'bar'});
于 2013-09-06T14:14:37.787 回答
2

它们被称为高阶函数

于 2013-09-06T14:10:23.347 回答
2

正如 Ingo 所说 ,生成另一个函数的函数称为高阶函数。

返回其第一个参数的函数称为标识函数

于 2013-09-06T14:14:02.903 回答