闭包的理解

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

这里涉及到几个概念:

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.私有成员的存在, 无法被外部调用, 只可以自己内部使用

结论:

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

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

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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包(closure)是Javascript语言的一个难点,也是它的特色,很多高级应用都要依靠闭包实现。 一、变量...
    zouCode阅读 1,295评论 0 13
  • 闭包:从字面意思来理解就是封闭和包裹,换句话说,就是在函数内部定义的变量,在函数的外部无法访问到,因此就说函数构成...
    清葉阅读 580评论 1 0
  • 1.什么是闭包? 1.1.定义:在程序语言中,所谓的闭包,是指语法域位于某个特定的区域,具有持续参照(读写)位于该...
    以手画圆心阅读 1,601评论 0 0
  • 今天我们学习了 Javascript 中作用域链和闭包的相关知识,在此写一篇文章来总结一下,加深自己对这两个知识点...
    丿灬J阅读 878评论 0 0
  • 作者:xiaotie , 集异璧实验室(GEBLAB)出处:http://www.cnblogs.com/xiao...
    新晋小牛牛阅读 245评论 0 0