首页 > 代码库 > js闭包的理解

js闭包的理解

1.为什么用闭包?    

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

    函数内部是可以直接读取全局变量的,而函数外部却无法读取函数内部的局部变量,所以闭包的出现实际就是为了能在函数外部获取函数内部的局部变量。


2.什么是闭包?  

    function f1(){

        var n=1;

        function f2(){

          alert(n); 

        }

        return f2;

      }

    var result=f1();

    result();

函数外部访问不到内部变量?我们在函数f1内部声明函数f2,n1相当于f2的全局变量,所以f2是可以访问f1的局部变量,所以,我们将f2作为返回值return出来,就可以在外部访问f1中的局部变量。


3.闭包的作用?

    (1)可以读取函数内部的变量

    (2)让这些变量的值永远保存在内存中。(实例中result其实是指向f2的,所以f2始终会在内存中,而f2又是依赖于f1而存在的,所以f1也会一直处在内存中不会被垃圾回收)

js闭包的理解