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

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

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

【问题讨论】:

    标签: javascript closures


    【解决方案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.

      另见堆栈溢出

      【讨论】:

      • 它们通常在什么时候使用?
      • @codeninja 查看底部的链接。不久前,当我正好处于你的位置时,他们帮助了我。
      猜你喜欢
      • 2015-12-13
      • 1970-01-01
      • 2010-10-28
      • 2010-09-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-19
      相关资源
      最近更新 更多