"higher-order functions" 这个东西在 Javascript 中是如何工作的

How does this "higher-order functions" thing works in Javascript

来自Marijn Haverbeke的书Eloquent Javascript,在介绍高阶函数的概念时有this example

function greaterThan(n) {
  return function(m) { return m > n; };
}
var greaterThan10 = greaterThan(10);
console.log(greaterThan10(11));
// → true

我不太确定这是如何工作的...可能是在回答我自己的问题,但我是这样看的:

有人可以确认我是否正确吗?此外,如果有人可以提供有关此高阶函数如何在 JavaScript 中工作的更多详细信息和评论,我们将不胜感激。

你是对的,从理解的层面上来说,但它的评估略有不同。

var greaterThan10 = greaterThan(10);

此行不会将函数存储为 greaterThan10 "look like" 任何东西 - 它创建了一个新函数,将变量 n 传递给它,因此 greaterThan10 变成一个看起来像

的函数
var greaterThan10 = function(m) { return m > 10; };

你调用的时候,就是直接调用这个函数,根本就没有经过原来的函数。

我看例子的时候也是一头雾水,后来得出如下结论:

在第 3 章:函数中,解释了如何使用箭头符号 (=>) 声明函数。箭头符号出现在参数列表之后,如果只有一个参数,则参数列表周围的括号可以省略。所以,m 是一个参数而不是函数名。

所以,在第一次调用 greaterThan(10) 之后,greaterThan10 基本上变成了

var greaterThan10 = function (m) { return m > 10; }

第二次调用后,greaterThan10(11),变为

function (11) { return 11 > 10; }

11 > 10,returns 正确。