尽管还有另一篇关于闭包的文章,但我的问题是针对特定的代码块,以确保在阅读另一篇链接的文章后,我的想法是正确的。
我在这本书中的以下代码
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/