美文网首页工作生活
简单理解闭包

简单理解闭包

作者: 没有卢果 | 来源:发表于2019-07-01 20:31 被阅读0次

当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。

在 Javascript 中,如果一个对象不再被引用,那么这个对象就会被回收,否则这个对象一直会保存在内存中。
当我们需要在模块中定义一些变量,并希望这些变量一直保存在内存中但又不会 “污染” 全局的变量时,就可以用闭包来定义这个模块。

闭包的问题让变量得不到释放,增加内存使用率,造成内存泄漏;

闭包的使用场景:
  • 使用场景一: 给对象设置私有变量并且利用特权方法去访问私有属性

  • 使用场景二: 采用函数引用方式的setTimeout调用
    setTimeout: 接收两个参数,第一个参数可以是一段js代码,亦可以是一个函数,第二个参数是我们延迟执行第一个参数的时间(实际上不是延迟执行,而是延迟加入执行队列),在此我们要讨论的情况是第一个参数是一个函数的情况,我们传入的参数实际上是函数对象的引用,那这时候就不能向函数传参了,那么闭包就派上用场了

  • 使用场景三: 封装相关功能集
    一个内联执行的函数表达式返回了内部函数对象的一个引用。并且分配了一个全局变量,让它可以被作为一个全局函数来调用。而缓冲数组作为一个局部变量被定义在外部函数表达式中。它没有被扩展到全局命名空间中,并且无论函数什么时候使用它都不需要被再次创建。

相关文章

  • 简单理解闭包

    当一个内部函数被其外部函数之外的变量引用时,就形成了一个闭包。 在 Javascript 中,如果一个对象不再被引...

  • 简单理解闭包

    本来以为闭包很简单,只是一个函数引用另一个函数的变量.但为什么要这样做呢. 两段代码一样 为何要多此一举.实际关...

  • 知识收集

    一、闭包 理解闭包: 只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成"定义在一个函数内部的函数"。...

  • JS进阶系列之闭包

    我对闭包的理解就是:闭包就是能够读取其他函数内部变量的函数,可以把闭包简单理解为“定义在一个函数内部的函数”。 在...

  • 闭包的简单理解

    window.onload = function () { //闭包:子函数可以使用父函数的局部变量 functi...

  • 简单理解JavaScript闭包

    很多关于JS的书籍例如《JavaScript权威指南》或者《高程》都把闭包解释的晦涩难懂,萌新们是怎么也看不懂啊!...

  • js作用域链

    之前写过一篇JavaScript 闭包究竟是什么的文章理解闭包,觉得写得很清晰,可以简单理解闭包产生原因,但看评论...

  • JavaScript之理解闭包

    一个简单的闭包 例1 理解闭包 闭包是指在 JavaScript 中,内部函数总是可以访问其所在的外部函数中声明的...

  • JavaScript闭包之for循环

    之前讲了最简单的闭包,然而闭包最经典的是那个for循环,几乎每一个想要理解闭包的都会遇到这个例子,每一个讲解闭包的...

  • Gradle开发-Groovy闭包

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

网友评论

    本文标题:简单理解闭包

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