为什么我们在JavaScript中有闭包?

gat*_*ath 16 javascript closures

我正在围绕JavaScript关闭我的头,我正处于事情正在发生的地步; 即,闭包是函数的局部变量 - 在函数返回后保持活动状态,或者闭包是在函数返回时未释放的堆栈帧.

我开始明白这个概念,但我越了解我就越不知道为什么我们必须使用它们.

像这样的例子让我理解这个概念,但让我问,有一种更简单的方法可以做到这一点!

function sayHello(name) {
   var text = 'Hello ' + name;
   var sayAlert = function() { alert(text); }
   sayAlert();
}
sayHello('Gath');
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么我必须保持局部变量活着?功能退出后?

我在哪里可以看到关闭实现的解决方案的示例,除了闭包之外什么都没有用?

Dan*_*llo 7

闭包为语言增添了表达力.由于闭包,有一些模式可以很容易地实现.想到的一些例子包括: