闭包函数:函数内部的函数,就是函数内部再次声明一个函数就叫做闭包。
闭包生成的三个必要条件:
1、 在函数a内部直接或者间接返回一个函数b
2、 B函数内部使用着a函数的私有变量(私有数据)
3、 A函数外部有一个变量接收函数b
代码示例如下:
例二、
每次外部函数执行的时候,外部函数的地址不同,都会创建一个新的地址
闭包的特点及优缺点:
1、延长变量的生命周期
优点:因为执行空间不会消失,变量也就不会销毁
缺点:因为执行空间不会销毁,会一直存在在内存中
2、可以访问函数内部的私有变量
优点:利用闭包函数可以访问函数内部的私有变量
缺点:执行空间不会销毁,会一直存在在内存中
3、保护私有变量(只要函数,就会有这个特点)
优点:保护私有变量不被外界访问
缺点:如果访问,必需利用闭包函数
闭包的函数致命缺点:
因为一段内存空间有一个不会被销毁的东西一直存在,会出现内存占用,如果过多,会导致内存溢出,导致内存泄漏;
闭包的作用:
1、 需要延迟变量的声明周期的时候使用
2、 或者需要访问某一个函数内部的私有变量的时候,前提是如果有更好的办法,尽量不用闭包,缺点致命。