1.什么是闭包
函数嵌套函数,且内部函数必须使用外部函数的变量,当外层函数执行后,闭包也就出现了
如:
function fn() {
let a = 10
return function() {
a++;
console.log(a)
}
}
let f=fn()//闭包形成了
2闭包的作用
使外部函数变量长期驻留在内存中,不被释放掉,但同时这也是它的缺点,大量的闭包会占用大量的内存资源,导致内存泄漏
3怎样解决闭包造成的内存泄漏问题
手动清除引用,f=null
4为什么闭包内变量(a)不会被垃圾回收机制回收
正常情况下函数执行完后,内部变量会被回收,释放内存空间,但闭包是由于内部函数没有执行完成,外部函数变量不会被回收