龙空技术网

一文理解Javascript中的闭包(Closure)

起风了Zzzzz 79

前言:

现时兄弟们对“闭包closure”大致比较看重,姐妹们都需要分析一些“闭包closure”的相关资讯。那么小编也在网摘上搜集了一些对于“闭包closure””的相关资讯,希望各位老铁们能喜欢,同学们一起来了解一下吧!

要理解Javascript中的闭包首先要要理解Java中的变量作用域,变量的作用域无非就是两种:全局变量和局部变量。

全局变量

   var n=999; //此时的n是全局变量  function f1(){    alert(n);  }  f1(); // 999

局部变量

function f1(){  // 此时的n是局部变量  var n=999; }// alert函数无法访问到f1函数的局部变量报错alert(n); 
 闭包的产生,当函数f1的内部函数f2,访问了f1函数的局部变量n,就产生了一个闭包。看下面的例子
  function f1(){      // 局部变量n被f2函数访问产生闭包    var n=999;     function f2(){      		n+=1;      alert(n);    }    return f2;  }   //1)f1函数执行完返回了f2函数,   //2)f2函数即是一个函数同时也是一个对象,   //3)f2持有f1函数对象的局部变量n并且没有被回收从而产生闭包现象	   //返回f2是一个函数   var result= f1();   result(); // 1000  result(); // 1001

标签: #闭包closure