【问题标题】:Can someone explain to me how this function works?有人可以向我解释这个功能是如何工作的吗?
【发布时间】:2015-09-24 04:30:21
【问题描述】:

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

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

var greaterThan10 = greaterThan(10);

console.log(greaterThan10(11));

感谢您的帮助。

【问题讨论】:

  • 我了解 m > n,我正在尝试了解如何将值分配给 m 和 n。
  • 内部函数通过闭包记住它的上下文,所以函数知道你传递的n和m的值。

标签: javascript abstract higher-order-functions


【解决方案1】:

函数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

【讨论】:

    猜你喜欢
    • 2015-11-25
    • 2023-01-18
    • 2020-10-11
    • 2021-05-11
    • 1970-01-01
    • 2011-09-12
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多