闭包有啥好处,它们通常在啥时候使用?

Posted

技术标签:

【中文标题】闭包有啥好处,它们通常在啥时候使用?【英文标题】:What are the benefits of a closure, and when are they typically used?闭包有什么好处,它们通常在什么时候使用? 【发布时间】:2011-05-05 09:32:49 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

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

jQuery 经常使用闭包 - 顺便说一句,这是了解 jQuery 闭包的好链接:A Graphical Explanation Of Javascript Closures In A jQuery Context。

希望对你有帮助。

【讨论】:

【参考方案2】:

有很多可用的 JS 书籍,但如果你真的想学习,你真的应该拿一本 David Flanagan 的 JavaScript: The Definitive Guide(恕我直言,这仍然是最好的 JS 参考)。阅读有关闭包的章节,您将获得比任何人都可以在此处回复您的更深入的知识。

【讨论】:

如果您可以在此处详细说明,该问题正在询问特定主题。如果发布一个带有好例子的描述可能会有很大帮助。【参考方案3】:

它们对很多事情都有好处,例如可见性(如传统 OO 中的私有成员)。

var count = function(num) 

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


See it.

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

This is a pretty good overview.

另见堆栈溢出

What is a practical use for a closure in JavaScript? How does a javascript closure work ? When actually is a closure created? more...

【讨论】:

它们通常在什么时候使用? @codeninja 查看底部的链接。不久前,当我正好处于你的位置时,他们帮助了我。

以上是关于闭包有啥好处,它们通常在啥时候使用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥要使用easyui这些框架,这些框架的优势是啥,有啥好处,主要是用在啥方面

闭包存储属性初始化有啥好处?

@responsebody一般在啥情况下使用,他的好处与坏处?

jquery 分页插件pagination的回调函数callback在啥时候执行?有啥用?

泛型有啥好处,为啥要使用它们?

OAuth2中刷新令牌有啥好处[重复]