尽管还有另一篇关于闭包的文章,但我的问题是针对特定的代码块,以确保在阅读另一篇链接的文章后,我的想法是正确的。

我在这本书中的以下代码

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


我的问题是GreaterThan10函数如何记住n的值?这是关闭的例子吗?

最佳答案

是的,这是关闭的例子。

我们有一个内部函数,包裹在外部函数greaterThan中。现在来了有趣的事情。

我们将值传递给greaterThan(n)

var greaterThan10 = greaterThan(10);

现在想一想,该变量greaterThan10中的值正在得到帮助,即; 10(在我们的例子中分配给第一个局部变量'n')。现在,每当您使用此变量并将其传递给变量时,它将自动分配给第二个局部变量(在本例中为m)。现在您可以想象输出为true

您可以深入进行此操作(三个级别,四个级别等),但是基本知识是相同的。

希望你能理解 :-)

关于javascript - 关闭? Eloquent JavaScript,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48247129/

10-09 23:33