美文网首页
闭包是什么?

闭包是什么?

作者: 风向应该可以决定发型吧 | 来源:发表于2020-11-16 14:49 被阅读0次
  • 闭包的概念:
    闭包的概念有多种,哪怕是各种权威的书籍里都没有统一的一个概念,但闭包就是闭包,真相也只会有一个,只是描述不同罢了。

    我的理解是:

闭包是JS中的一种特殊结构,闭包的形成与函数嵌套息息相关。

通常情况下,当一个函数被执行时,其内部的变量会被分配内存空间来声明和赋值;当函数执行完成之后,变量会被GC机制回收。
但如果嵌套的函数内引用了外层函数作用域内的变量,那么这时外部被引用的变量因为不符合回收条件,就会一直存储着数据,实现了数据的长缓存。

  • 闭包的作用:

    1. 闭包的一个典型应用场景是,在ES6的let、const这种块级作用域声明出现之前,如果通过for循环来遍历异步操作,当这个异步操作内部使用了 循环索引时,那么结果一定不会是预期的。
      这是由于同步异步以及JS单线程的特性决定的,for循环是同步的,那么在同步代码执行完成之前都不会执行异步操作。所以当异步操作开始执行的时候,循环引用一定不会是预期的那样。
      这时就会利用立即执行函数(IIFE)形成的闭包保存每一次遍历的循环索引值,通过这种方式来解决这个问题。
    2. 闭包的另一个用处是防止变量污染, 通过IIFE提供的函数作用域来隔绝外部对内部的影响,根据作用域链查找原理,会始终优先使用IIFE内的变量,起到了一个类似于命名空间的作用,这就是一种早期的模块化方案。
    3. 闭包还有一个作用是实现变量私有化,由于外部无法访问到函数内部作用域,可以通过这种方式来防止内部变量被外随意修改。
  • 闭包的坏处: 闭包虽然好用且强大,但是由于会一直保存变量,使得垃圾回收机制无法正常回收,所以一定不能滥用,否则会导致内存泄露。

相关文章

  • Python闭包与几种装饰器浅析

    闭包 闭包是什么?闭包可以保存外部函数的变量,可以增加代码的复用性,那具体闭包的构成是什么? 1. 闭包构成条件 ...

  • 前端常见问题总结

    什么是闭包?闭包的用途是什么?闭包的缺点是什么? 什么是闭包 闭包:内部函数总是可以访问其所在的外部函数中声明的参...

  • 闭包、call-apply-bind 的用法 、HTTP状态码

    一、什么是闭包?闭包的用途是什么?闭包的缺点是什么? 答 :1、什么是闭包:如果一个函数用到了外部的变量,那么这个...

  • 闭包,call、apply、bind 的用法,HTTP 状态码

    什么是闭包?闭包的用途是什么?闭包的缺点是什么?• 闭包:如果一个函数用到了外部的变量,那么这个函数加这个变量就叫...

  • 闭包的总结

    围绕:闭包是什么?闭包的用途有哪些?闭包的缺点是什么? 这三个问题来进行总结 一、何为闭包?如果一个函数用到了外部...

  • Python 闭包使用注意点

    1 Python 闭包 今天,聊下 python 的闭包。在函数编程中经常用到闭包。 闭包是什么,它是怎么产生的及...

  • web前端必知篇:闭包的理解

    闭包这玩意,在面试的时候经常被问到。如果你还不了解,小编就简单的讲解一下! 闭包是什么,闭包的优点是什么? 闭包就...

  • 闭包是什么

    闭包是什么? 闭包是一个函数 闭包可以使用在它外面定义的变量 闭包存在定义该变量的作用域中 各种专业文献上的"闭包...

  • JavaScript 中 闭包 的详解

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

  • JavaScript 中的闭包

    闭包是什么 在 JavaScript 中,闭包是一个让人很难弄懂的概念。ECMAScript 中给闭包的定义是:闭...

网友评论

      本文标题:闭包是什么?

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