闭包详解 简单明了,看这一篇就够了

64 阅读2分钟

闭包

闭包是一片不会被销毁的EC。它对EC中的数据有保护和保存的作用。 (闭包就是能够读取其他函数内部变量的函数)

保护:防止像全局变量那样被污染,数据在函数内部,外界访问不了。 保存:可以像全局变量那样,延长变量的生命周期。

应用场景:

  • 模块封装,在各模块规范(ES6)出现之前,都是用这样的方式防止变量污染全局
  • 数据私有化
  • 封装一些工具函数
  • 在循环中创建闭包,防止取到意外的值。
  • 防抖 、节流 、⽴即执⾏函数 、组合函数等等

闭包使用不当可能会导致内存泄露

 闭包的作用
        1.延长了变量的生命周期
        2.扩大了变量的作用范围
        3.保护了变量
        缺点:
        1.会导致内存泄漏

简单实现闭包

<script>
    var a=200;
    function fn(){
        var a=100;//局部变量
        function gn(){
            console.log(a);//这里输出的a是fn中的局部变量a
            // 也就是说 gn函数中的语句 引用了fn中的局部变量
        }
        gn();
        return gn;//将函数gn返回
    }
    var r=fn();//在这里的时候就已经形成了闭包
    // 这里的r接收的是函数gn的地址
    r();//调用了函数 调用了gn 
</script>

再来一个

<script>
    var i = 0;
    function A() {
        var i = 10;
        function x() {
            console.log(i);
        }
        return x;
    }
    var y = A();
    y();
    function B() {
        var i = 20;
        y();
    }
    B();
</script>

结束语

如果你觉得这篇文章对你有所帮助,可以伸出你的小手,为这篇文章点个赞

每一篇文章都是我学习的记录,通过分享,不仅能够加深我对知识的理解,还希望能够为大家提供一些微薄但有用的信息。如果你发现文章中有任何错误或者有更好的建议,欢迎在评论区或者下面的公众号告诉我,我将会及时进行修改。

最后,希望我的文章能够给大家带来一些收获。感谢大家的支持!