如何形成闭包
满足以下2个条件:才形成闭包
1.内部要在此嵌套一个函数,嵌套的函数引用外部的变量
2.嵌套的函数内部可以引用函数外部的参数和变量
![这个就是一个时间函数的一个闭包](https://img-blog.csdnimg.cn/20201027230206954.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwaWVjZW9mbmV3cw==,size_16,color_FFFFFF,t_70#pic_center)
为什么要使用闭包
1.解决了外部无法使用内部变量
2.解决了全局变量污染问题
这里就衍生了一个叫自由变量
自由变量就是函数内部使用外部的变量,这个变量就是自由变量
注:跨域的变量都是自由变量,即声明的和使用不在同一个作用域。
![这已解释了什么叫自由变量](https://img-blog.csdnimg.cn/20201027230629379.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0FwaWVjZW9mbmV3cw==,size_16,color_FFFFFF,t_70#pic_center)
它的好处是
1.保护函数内的变量安全,也防止变量在其他的环境发生声明冲突。
2.延长了变量的生命周期。
坏处
1.被引用的私有变量不能自动被销毁