正常函数执行结束,局部活动对象会被销毁,内存中就只剩下全局作用域。不过闭包就不一样了,外部函数的活动对象存在内部函数,内部函数的作用域链包含外部函数,其活动对象并不能在它执行完毕后销毁,因为匿名函数的作用域链中仍然有对外部函数活动对象的引用,直到内部函数的被销毁,才会触发垃圾回收机制。
优点:
闭包可以实现对象的私有属性和私有方法。
闭包可以封装变量,从简减少对全局作用域的污染。
缺点:
闭包会过度占用内存
js高级程序设计第四版中是这样总结的:闭包指的是那些引用了另一个函数作用域中变量的函数,通常是在嵌套函数中实现的
浙公网安备 33010602011771号