> 文档中心 > 深入理解闭包

深入理解闭包


前言

闭包是前端的三座大山之一,它的重要性不言而喻,闭包既有优点又有缺点,因此我们要想合理使用闭包,必须对闭包有深刻的理解,本篇文章将从闭包的理解、闭包的作用、闭包的生命周期、闭包的应用、闭包的优缺点这五方面对闭包详细介绍,让小伙伴们深入理解闭包;
在这里插入图片描述

文章の目录

  • 前言
  • 闭包的理解
  • 闭包的作用
  • 闭包的生命周期
  • 闭包的优缺点
  • 闭包的应用

闭包的理解

闭包的理解1:嵌套的内部函数
闭包的理解2:包含被引用变量(函数)的对象;
闭包目前有以上两种理解方式,可以通过chrome谷歌调试工具查看到闭包;代码示例如下:
在这里插入图片描述

闭包的作用

闭包的作用一:延长了外部函数变量的生命周期;
Js引擎在执行函数内部的代码时,如果内部的代码执行完毕,函数内部的变量就会被自动释放,在释放后的某一个时刻被垃圾回收器回收,但是由于有闭包的存在,嵌套的内部函数引用了外部函数内的变量,导致此被嵌套在内部函数访问的变量不能被释放和回收;

闭包的作用二:使得在函数外部能够操作函数内部的变量;
在这里插入图片描述

闭包的生命周期

闭包的产生:当定义内部嵌套函数完成时,闭包就产生了;
在这里插入图片描述
以上图片中的第二行,闭包就已经产生了,由于函数提升, 在调用外部函数时,闭包就产生了;

闭包的死亡: 当内部嵌套的函数为空对象时,闭包死亡;
在这里插入图片描述
以上图片中给f赋值一个空对象的那一刻,闭包死亡;

闭包的优缺点

闭包的优点:
一、闭包能够避免变量的污染
二、闭包能延长变量的生命周期
三、闭包能使得在函数外部操作函数内部的变量
闭包的缺点:
闭包会导致,函数内部的变量不能及时释放,不能被垃圾回收器回收 ,造成内存泄漏,如果内存泄漏积累太多就会导致内存溢出,然后程序崩溃;

闭包的应用

利用闭包可以自定义一个JS模块,外部可以引入这个模块,调用这个模块中的方法,但是不能访问模块中的变量;
在这里插入图片描述

🥂(❁´◡`❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞