Javascript闭包的实际用法/示例

时间:2013-03-15 07:23:17

标签: javascript closures

我理解Javascript闭包背后的理论概念,比如有一个变量只能通过内部函数和所有那些......在JS中实现私有变量。

但我想了解一些实际的例子,其中闭包实际上是有用的。所以我需要的例子不是要了解闭包是什么,而是Closure的实际用例。

1 个答案:

答案 0 :(得分:8)

两个标准示例:

1)保留回调变量:

   var a = [1, 2, 3];
   for (var i=0; i<a.length; i++) {
      (function(j){
          setTimeout(function(){
             console.log(a[j]);
          }, 1000*j);
      })(i);
   }

2)保持变量私密

var obj = (function(){
    var private = 0;
    return {
        increment: function(){ private++; },
        getValue:  function(){ return private; }
    }
})();

实际上最简单的是要记住一个的东西:什么是闭包,即从函数到创建它的作用域的链接。此链接可防止范围(及其变量)被包含,并且它是此范围的唯一可访问链接(因此隐私)。