闭包

作者: Yaoxue9 | 来源:发表于2018-06-19 21:54 被阅读11次

    1.什么是闭包?
    闭包就是指有权访问另一个函数作用域中变量的函数,通俗点讲闭包就是能够读取其他函数变量的函数。

    2.为什么需要闭包?
    第一个用途就是上述通过闭包去访问函数内部变量。

    第二就是长久的保存变量又不会造成污染。

    为什么会产生这样的情况?这是因为add2是fn的父亲函数,而在全局环境当中,fn其实是被赋给了全局变量result的,而result只会在全局环境执行完所有代码之后才会被回收,所以就导致了fn常驻内存,而fn的存在又依赖于父亲函数add2,所以add2在被调用之后也不会别GC回收,也始终存在于内存当中。

    3.如何使用闭包?
    ⅰ定义外层函数,封装被保护的局部变量。 ⅱ定义内层函数,执行对外部函数变量操作ⅳ外层函数返回内层函数的对象,并且外层函数被调用,结果保存在一个全局的变量中。

    4.闭包可能引发的问题?
    ①由于闭包会使得函数中的变量都被保存在内存中,内存消耗很大,所以不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。解决方法是,在退出函数之前,将不使用的局部变量全部删除。

    ②闭包会在父函数外部,改变父函数内部变量的值。所以,如果你把父函数当作对象(object)使用,把闭包当作它的公用方法(Public Method),把内部变量当作它的私有属性(private value),这时一定要小心,不要随便改变父函数内部变量的值。

    相关文章

      网友评论

          本文标题:闭包

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