有人可以向我解释这个功能是如何工作的吗?

Can someone explain to me how this function works?

我正在学习编码,并且正在尝试理解高阶函数和抽象。不明白这段代码怎么跑到return"true".

function greaterThan(n) {
  return function(m) { return m > n; };
}

var greaterThan10 = greaterThan(10);

console.log(greaterThan10(11));

感谢您的帮助。

函数greaterThanreturns一个函数在调用的时候。即使在函数返回之后,返回的函数也可以访问外部函数的所有成员。这叫做closure.

function greaterThan(n) {
    return function (m) {
        return m > n;
    };
}

执行以下语句时

var greaterThan10 = greaterThan(10);

转换为

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

所以,greaterThan10 现在是函数,可以调用为

console.log(greaterThan10(11));

现在,m 的值为 11return 11 > 10; returns 为 true

阅读更多关于闭包的信息:

How do JavaScript closures work?

此外,我会向所有 JS 开发人员推荐很棒的文章

http://dmitryfrank.com/articles/js_closures