其他分享
首页 > 其他分享> > 闭包小问题

闭包小问题

作者:互联网

问题:闭包简单来说就是在外部用了内部的数据(变量/函数) 那么当内部执行完后,函数内部的声明的局部变量还存在吗?

不存在

        function fn1(){
            var a=2
            function fn2(){
                a++
                console.log(a)
            }
            function fn3(){
                a--
                console.log(a)
            }
            return fn3

        }
        var f=fn1()
        f() //1
        f() //0

例如上述就产生一个闭包,内部嵌套的函数使用了外部函数的变量a形成闭包,并且在全局下使用了fn1()返回fn3

当执行完var f=fn1()之后,函数内部的局部变量fn2 fn2会被销毁,fn2对象没有被使用当成垃圾对象被回收

而fn3变量其实会销毁,保留的是fn3所指向的堆内存中的对象,只不过 f 指向他了,所以这个对象的空间没有被释放,里面的a也一直被保留下来可以使用

标签:闭包,function,fn3,fn2,fn1,问题,var
来源: https://blog.csdn.net/jw_code/article/details/116562980