封盖有什么好处,什么时候通常使用?

qod*_*nja 17 javascript closures

我是一名网络开发人员,但很多人都在寻找更高级的技能,理解闭包似乎是最重要的.

我得到了整个"执行上下文创建对一个永远不会被破坏的变量的引用"的东西,但实际上,这是JavaScript中的某种私有或静态变量实现吗?

ale*_*lex 14

它们可以用于许多事情,例如,可见性(如传统OO中的私人成员).

var count = function(num) {

   return function(add) {
       add = add || 1;
       num += add;
       return num;
   }

}
Run Code Online (Sandbox Code Playgroud)

看到它.

count()可以用数字播种.当我为返回分配一个变量时,我可以用一个可选的数字来调用它来添加到内部num(最初是一个参数,但仍然是返回函数范围的一部分).

这是一个非常好的概述.

另请参阅Stack Overflow


rse*_*nna 5

闭包是一个带有绑定变量的代码块 - 它从外部上下文中“捕获”其变量 - 但它独立于同一上下文。

javascript 中的一个实际用途是定义事件或回调时 - 例如,您声明一个要在单击按钮时执行的闭包,但此闭包可以引用在调用方作用域上声明的变量。

jQuery大量使用闭包 - 顺便说一句,这是理解 jQuery 闭包的一个很好的链接:A Graphical Explanation Of Javascript Closures In A jQuery Context

希望能帮助到你。