闭包小问题

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

不存在

        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也一直被保留下来可以使用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值