美文网首页
闭包的理解

闭包的理解

作者: WilliamCha_8c18 | 来源:发表于2018-03-17 15:41 被阅读0次

闭包是这样一种机制: 函数嵌套函数,内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制所收回.

这里涉及到几个概念:

1.函数嵌套函数

2.作用域(全局变量和局部变量)

3.变量的访问规则

    垃圾回收机制(garbage collection)

    js内部不断扫描内存,并清理无引用对象(自动完成);

function aa(){

        var num=10;

        function bb(){

            num++

            console.log(num);

        }

        return bb;

    }

    //bb(); //无法直接访问函数内部的函数

    aa()();//11

    aa()();//11

    aa()();//11

    var closure = aa();

    closure();//11

    closure();//12

    closure();//13

闭包的好处

        1.可以让一个变量长期驻扎在内存当中不被释放

        2.避免全局变量的污染, 和全局变量不同, 闭包中的变量无法被外部使用

        3.私有成员的存在, 无法被外部调用, 只可以自己内部使用

结论:

        闭包是指有权访问另一函数作用域中的变量的函数

        闭包,可以访问函数内部的局部变量,并让其长期驻留内存

        由于闭包会携带包含它的作用域(运行环境),因此会比其他函数占用更多内存,过度使用闭包            可能会造成性能问题。

相关文章

  • Gradle开发-Groovy闭包

    # 闭包 闭包的基础知识 闭包的使用 闭包 this,owner,delegate 的理解 总结 ## 闭包的基础...

  • Swift5 闭包及其应用

    关于如何理解闭包 学习闭包的第一个难点就是理解闭包,可能很多人用了很久的闭包都还不太清楚闭包到底是什么,我这里提供...

  • 【js基础修炼之路】— 深入浅出理解闭包

    之前对于闭包的理解只是很肤浅的,只是浮于表面,这次深究了一下闭包,下面是我对闭包的理解。 什么是闭包? 引用高程里...

  • JS闭包理解

    闭包的概念 闭包就是能够读取其他函数内部变量的函数。 一、变量的作用域 要理解闭包,首先必须理解Javascrip...

  • 自动闭包/逃逸闭包/非逃逸闭包

    自动闭包、逃逸闭包和非逃逸闭包三个概念有些不好理解,这里按我自己的理解总结一下,不对的地方请指正 一、非逃逸闭包:...

  • 闭包理解

    这次我发现了个奇怪的问题,高程经典的闭包陷阱,竟然是把一个未执行的函数赋值给了一个数组项,当年的我太年轻,竟然没看...

  • 理解闭包

    什么是「闭包」。 「闭包」的作用是什么。在一个立即执行函数当中: 首先,假设以上几行代码运行在立即执行函数当中,那...

  • 理解闭包

    什么是闭包?闭包是什么时候创建的?能不能看到闭包?从这三点出发学习。 在维基百科中的闭包:词法闭包的简称。是引用了...

  • 理解闭包

    spark 比较难得一个事情之一就是当在集群上执行代码的时候,变量和方法的范围和生命周期。Rdds 的操作 能够修...

  • 理解闭包

    欢迎移步我的博客阅读:《理解闭包》 闭包 是指可以包含自由(未绑定到特定对象)变量的代码块;这些变量不是在这个代码...

网友评论

      本文标题:闭包的理解

      本文链接:https://www.haomeiwen.com/subject/fdlifftx.html