日期:2014-05-16  浏览次数:20361 次

如何使用javascript闭包

如何使用javascript闭包
2011-12-15 11:47

闭包的概念:官方的解释是,指的是一个拥有许多变量和绑定了这些变量的环境的表达式(通常是一个函数),因而这些变量也是该表达式的一部分。?

变量的作用域:全局变量和局部变量

全局变量:函数内部可以直接读取全局变量

??????????? var n=999;
????????????function f1(){

????????????? alert(n);

?????????? }

??????????? f1(); //999

局部变量:函数外部自然无法读取函数内的局部变量?
??? function f1()
??? { var n=999;
??? }
  alert(n); // error
注意:申明内部变量的时候,一定要写var,否则,它就是一个全局变量?

如何从外部读取局部变量?
?? 只有在函数的内部再定义一个函数:
function function A()
{
    var n=999;
    function B()
??{
      alert(n); // 999  

 }
}

既然B可以读取A中的局部变量,那么只要把B作为返回值,我们不就可以在A外部读取它的内部变量了吗!
???? function A()
???? {
    var n=999;
    function B()
??? ?{     

???  alert(n);?  

?  }
    return B;
  }
  var result=A();
  result(); // 999?
此时,B函数就是一个闭包.

闭包的简单概念:
闭包就是能够读取其他函数内部变量的函数。?