闭包的产生条件:1.函数嵌套;2.内部函数引用外部函数的变量或函数。
闭包的用途:1.函数外部可以读取/操作到函数内部的变量/函数;2.函数执行完之后,函数内部变量的值始终保存在内存中。外部函数中没有形成闭包的变量或函数是会被回收的。
每一次对外部函数的调用都会产生一次闭包,此时 在嵌套内部函数 定义 执行完就存在了。
闭包也是会被回收的,需要定义一个变量来一直指向闭包函数体的地址值,让闭包一直存在。当变量指向其他值,则不再指向闭包函数体的地址值,则闭包死亡,嵌套的内部函数成为垃圾对象。
滥用闭包会导致内存泄漏,内存泄露(不再需要的内存使用完毕后,没有及时释放或无法释放)