什么是闭包?
闭包是有权访问另外一个函数作用域中变量的函数。常见的闭包:在函数内部创建一个函数,使用闭包函时, 可以访问外部函数中的变量。因为内部函数的作用域链包含了外部函数的作用域链。
为什么会有闭包?
函数调用时,会创建一条作用域链,函数执行完毕之后,这条链被立即销毁。
闭包函数将外部函数的活动对象加入到了闭包函数的作用域链中,只有闭包函数执行完毕后,活动对象才会被销毁。
闭包的优缺点?
缺点:闭包会占内存,使用不当,容易导致内存泄漏。外部函数执行完毕后,其作用域链会被销毁,但是变量不会被销毁,因为内部函数的作用域链仍在引用它。直到内部函数执行完毕被销毁后,才会全部销毁。
优点: 可以防止变量污染,内部函数可以访问外部函数的变量。