当一个作用域内的一个(或多个)函数使用的上述作用域的变量,而这个函数并不被立即使用,而是处于备用状态,那么这个作用域将会驻留在内存中(更长的生命周期),这种现象被称为闭包。这个作用域不一定是该函数内变量的上一级作用域,也可能是该函数上很多级作用域。不被立即使用有两种情况,一种是被作为返回值(或返回值的一个方法)被赋给作用域之外的变量,由该外部变量来决定什么时候使用;另一种情况是,被当作异步操作的回调函数。驻留内存的时间由该函数的引用最终被释放来决定,当这个作用域内类似的引用全部被释放时,作用域才可能在内存中被销毁,闭包才会关闭。

2017-05-10 12:38:28