1.概念
如果在一个内部函数里,对在外部作用域(但不是全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)。简单来说就是,在一个函数A里返回了一个函数B,在A中定义的变量在B中使用,当调用函数B的时候,就会产生闭包。
2.与普通函数的区别
普通函数在调用之后,内部的变量就会被垃圾回收机制所回收,闭包所产生的变量在函数调用之后不会被垃圾回收机制所回收,所以滥用闭包的一个坏处就是会造成内存泄漏。举个栗子:
在这里,a变量和B函数就形成了闭包,并且a变量不会被垃圾回收机制给回收,会一直存在于内存中,所以每次运行的结果都被保存了起来,由此可以知道三次函数执行的结果分别是1,2,3
3.清除闭包
如果我们不小心使用了闭包,想要清除闭包也很简单,只需要将闭包函数赋值为null就可以了。