闭包

闭包

 

很多同学在面试的时候都会被问到闭包是什么?举例说明下闭包的运用?

 

闭包(closure)是javascript的一大难点,也是它的特色。很多高级应用都要依靠闭包来实现。

 

要理解闭包,首先要理解javascript的全局变量和局部变量。

 

javascript语言的特别之处就在于:函数内部可以直接读取全局变量,但是在函数外部无法读取函数内部的局部变量。

 

闭包的概念

闭包就是能够读取其他函数内部变量的函数。

 

由于在javascript中,只有函数内部的子函数才能读取局部变量,所以说,闭包可以简单理解成“定义在一个函数内部的函数“。

所以,在本质上,闭包是将函数内部和函数外部连接起来的桥梁

 

闭包的用法:

           function f1(){

        var a=10;

        function f2(){

          alert(a);

        }

                     f2()

      };

          f1();  //可以获取到局部变量a

 

 

但这种方式也可以实现呀

function f1(){

      var a = 10; 

      return a;

}

f1();

 

为什么需要闭包:

 

局部变量无法共享和长久的保存,而全局变量可能造成变量污染,当我们希望有一种机制既可以长久的保存变量又不会造成全局污染。

 

既可以长久的保存变量又不会造成全局污染

 

     function f1() {

            var a=10;

            function f2(){

                a++;

                console.log(a);

            };

            return f2;

        };

        var f = f1(); 

        f();

 

posted @ 2021-03-10 13:40  刘雨鑫  阅读(93)  评论(0)    收藏  举报