JavaScript - 如何了解“闭包”的使用方法?

时间:2008-10-17 14:33:12

标签: javascript closures

来自维基百科,免费的百科全书:关闭(计算机科学)

  

在计算机科学中,闭包是一种   在...中评估的函数   包含一个或多个的环境   绑定变量。当被召唤时,   函数可以访问这些变量。   明确使用闭包是   与函数式编程相关联   以及ML和。等语言   Lisp的。诸如对象之类的构造   其他语言也可以建模   关闭。

要在JavaScript中使用此功能,有人可以向我指出一个如何适用的示例吗?

3 个答案:

答案 0 :(得分:11)

搜索“javascript closures”给了很多令人鼓舞的链接。前三个是这两个(第三个链接是第二个链接的重新格式化版本):

如果这些对您没有帮助,请解释原因,以便我们能够更好地帮助您。如果你在问这个问题之前没有搜索,那么请 - 下次再进行搜索:)

答案 1 :(得分:4)

(使用jQuery中的示例)

function SetClassOnHover(className){
  $("td").hover(
    function () {
      $(this).addClass(className);
    },
    function () {
      $(this).removeClass(className);
    }
  );
}

当在每个函数的范围内使用变量className时,闭包起作用。当SetClassOnHover退出时,两个函数必须在className上保留句柄,以便在调用函数时访问其值。这就是封闭所能实现的目标。

答案 2 :(得分:1)

闭包的一个实际例子是它们用于创建“私有”变量,如

function incrementer(){
    var i=0;
    this.increment=function(){
        i++;
    }
    this.get=function(){
        return i;
    }
}

访问i的唯一方法是使用方法get,唯一的方法是使用方法增量。在类中,您可以这样做来模拟私有变量。