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

时间:2015-09-24 04:30:22

标签: javascript abstract higher-order-functions

我正在学习编码,我正在尝试理解高阶函数和抽象。我不明白这段代码如何运行以返回“true”。

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

var greaterThan10 = greaterThan(10);

console.log(greaterThan10(11));

感谢您的帮助。

1 个答案:

答案 0 :(得分:12)

函数greaterThan在调用时返回一个函数。即使在函数返回后,返回的函数也可以访问外部函数的所有成员。这称为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;的值为true

了解有关闭包的更多信息:

How do JavaScript closures work?

另外,我建议对所有JS开发人员

进行精彩文章

http://dmitryfrank.com/articles/js_closures