任何人都可以解释闭包和嵌套函数之间的区别吗?

时间:2017-11-09 06:31:48

标签: javascript

我对Javascript相对较新。我理解嵌套函数的概念 - 但是闭包似乎不太清楚。两者之间的相似性(至少在我看来)是令人困惑的。

有人可以解释一下这个区别吗? (最好用一些代码片段来说明这些要点更清楚)。

1 个答案:

答案 0 :(得分:2)

在另一个函数中编写的一个函数称为嵌套函数。假设外部函数有两个函数,里面有一个内部函数。内部函数可以访问自己的变量,外部函数变量,参数,并且可以访问全局变量。这是由范围链完成的。如此创建的每个函数都有一个与之关联的范围链,这有助于我们访问变量值。

现在关闭什么?闭包 - 即使外部函数完成关闭,嵌套函数仍然存在。我们能够看到关闭的日常方式是回调。回调函数通常在事件完成时执行,执行它们时,即使外部函数已完成执行,它们也可以访问外部函数变量。