谈谈我对js高级的闭包的理解

版权声明:知识改变命运,科技改变生活,学习适应改变! https://blog.csdn.net/superaistar/article/details/82630761

闭包  Closures


★闭包:Closures(闭包)是使用被作用域封闭的变量,函数,闭包等执行的一个函数的作用域。通常我们用和其相应的函数来指代这些作用域(可以访问独立数据的函数)
    //来自MDN开发者网络解释;------上面①句话说明闭包是一个作用域------
    //来自MDN开发者网络解释;-----上面②句话说明闭包是一个函数-----(可以被函数指代)

~~★~~★~~自我理解:闭包

    概念:闭包:Closures(闭包)是使用被作用域封闭的变量,函数,闭包等执行的结果是一个函数的这个作用域。通常我们用和其相应的函数来指代这些作用域(可以访问独立数据的函数)

    闭包就是一个函数类型的作用域a返回的结果是一个函数(函数也是作用域b),

    这个函数可以使用产生它的作用域的成员,即作用域b可以访问和使用作用域a的成员和方法等

    举个例子说明一下,例如:

    function test() {    //---------------------------假设作用域 a;

                    var a = 10;   //-------------------------作用域a的成员(属性)

                    return function value() {  --------------作用域a的返回值

                            console.log(a);

                    }

            }
            // var f2 = test();    //----------------------------假设产生的作用域 b;

            console.log((test())());

    或者console,log(f2())//---------------------------//作用域b使用作用域a的成员和方法等
    
    //实现一个作用域访问和使用一个作用域

            function fun() {

                    var a = (test())();  //相当于f2();

            }

            fun();

    局部变量不可以被外部访问,但闭包可以让局部变量被外部访问,
    
    此时出现可以访问私有变量的现象称为闭包;

    也就是说闭包可以延展这个局部作用域这个私有成员不被自动销毁

★自我总结:闭包有三大特性:
        ①闭包是一个可以用函数指代的作用域;
        ②闭包可以实现一个作用域访问另一个局部作用域的成员和方法;
        ③闭包可以延展一个局部变量不被自动销毁。


 

猜你喜欢

转载自blog.csdn.net/superaistar/article/details/82630761