什么是闭包,闭包有什么应用特性.

         闭包就是能够读取其他函数内部变量的函数。在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

             通俗点讲:     闭包就是你的女人红杏出墙, 外人可以很轻易的通过它了解你家里的情况, 甚至指示她改变你的家,  只要你还没离婚, 你家就会被一直拖着, 这个状态很容易出问题. 但外人用着却很方便.....偷笑

             在js中,函数内部可直接访问外部变量,   外部却无法访问到内部变量,  在这我们实现的方法就是闭包了,    

     如下代码:


      以上代码中,  函数g()就被包在函数f()内部, 这时f()内部的所有的局部变量,对g()都是可见的, 但是反之就不行. 

     这就是javascript特有的"链式作用域" 结构.   子对象会一级一级的向上寻找所有的父对象的变量,  所以父对象所有的变量对子对象都是可见的,  反之就不成立.

     我们需要f()外部读取内部的变量a, 直接是无法读取的,   但是g()可以读取到f()中的a, 那么我们就把g()作为返回值.  这样我们就可以在f()外部读取他的内部变量了.

闭包的应用特性:

       1.局部变量 : 在函数中定义有共享意义的局部变量. ( 注: 定义成全局变量会对外部造成污染 ).

       2.内嵌函数: 在函数声明中有内嵌函数, 内嵌函数对函数中的局部变量进行访问.

       3.外部使用: 函数向外返回此内嵌函数, 外部可以通过此内嵌函数持有并访问声明在函数内部的局部变量, 而此变量外部是通过其他途径无法访问的.

猜你喜欢

转载自blog.csdn.net/qq_42205731/article/details/80769645