美文网首页JavaScript
面试题 -- 什么是闭包,为什么要使用闭包

面试题 -- 什么是闭包,为什么要使用闭包

作者: 开着五菱宏光的小白 | 来源:发表于2019-04-21 14:53 被阅读0次

什么是闭包

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。


  • 函数里面包含的子函数,子函数访问父函数的局部变量
  • 通过return将子函数暴露在全局作用域,子函数就形成闭包
  • 通过闭包,父函数的局部变量没有被销毁,可通过闭包去调用 ,但同时,这个局部变量也不会被全局变量污染

总结如下:

  • 函数内再嵌套函数
  • 内部函数可以引用外层的参数和变量
  • 参数和变量不会被垃圾回收机制回收

简单的闭包

       function aaa() {
            var a = 0;
            return function () {
                alert(a++);
            };
        }
        var fun = aaa();
        fun(); //1

闭包的优点和缺点

优点: 避免全局变量的污染,同时,局部变量没有被销毁,驻留在内存中,还可以被访问
缺点: 使用不当,会造成内存泄露

相关文章

  • 闭包1(基础)

    (什么是闭包?闭包的作用?闭包的缺陷?) (闭包的几种可能的应用场景) (闭包与内存泄漏,有关闭包的面试题) 推荐...

  • js闭包问题

    javascript 闭包的概念,闭包的作用,闭包经典面试题详解(配图解) 函数作用域(闭包前置知识) 要彻底弄懂...

  • 【JS】总算能把闭包经典面试题真的讲清楚了

    闭包的经典面试题 说到闭包,那么这个经典的闭包面试题,大家肯定都很熟悉: 这个例子当中为什么i输出的都是5呢?能够...

  • 面试题(day-2)

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 闭包:函数嵌套函数,内部函数可以引用外部函数的参数和变量,...

  • 前端面试题

    1 ,什么是闭包?闭包有什么好处?使用闭包要注意什么? 详情可参考:http://www.jianshu.com/...

  • 再次学习 Swift 闭包

    Swift 闭包 1. 什么是闭包? 闭包是自包含的函数代码块,可以在代码中被传递和使用。 2. 闭包能做什么? ...

  • 理解闭包、立即执行函数、异步和回调

    闭包 什么是闭包 一个函数使用了它外面的变量,这种用法就是闭包。闭包是一个马后炮的总结。 那为何要这样做呢(搞得这...

  • @escaping swift逃逸闭包和非逃逸闭包

    使用@escaping关键字的闭包是逃逸闭包 闭包默认是非逃逸闭包 逃逸闭包延长了闭包的生命周期 非逃逸闭包生命周...

  • groovy-闭包

    定义和执行闭包 闭包作为参数返回 闭包作为参数传递 闭包使用外部变量 注意: 闭包可使用(引用)闭包外部定义的变量...

  • 面试题 -- 什么是闭包,为什么要使用闭包

    什么是闭包 闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通...

网友评论

    本文标题:面试题 -- 什么是闭包,为什么要使用闭包

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