初步理解闭包

1.1理解闭包

  • 定义:当函数可以记住并访问所在的词法作用域(涉及到作用域和作用域链的相关知识)

  • 闭包本质上就是一个函数,但是他能够访问其他函数的作用域。

  • 闭包最简单的实现方式就是,一个函数内部再创建并返回一个函数,那么这个内部函数就被称为闭包。

  • 这个函数持有对外部函数执行上下文的一个引用,可以访问到外部函数的变量等等

1.2闭包的特性

  • 闭包可以解决变量命名冲突问题

  • 可以保护私有变量

  • 但是由于闭包一直持有对外部函数的引用,所以外部函数在内存中无法被销毁,导致内存占用率比较高,如果使用不当还会造成内存泄漏

1.3闭包的应用

  • 最简单的例子就是我们的定时器了,在函数内部开启一个定时器,如下所示

        function fun(){
            let a=10;
            setTimeout((()=>{
                console.log(a);
            }))
        }
        fun();//10
  • 因为定时器的回调函数持有对外部函数fun的一个引用,所以他才能右值查找得到a变量的值,就是闭包的一个简单的应用。

  • 其次还有防抖和节流的封装以及模块化,都用到了闭包,以及函数的柯里化都用到了闭包。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值