闭包常见问题

1、闭包的定义
闭包就是一个函数,一个可以读取外部函数变量的函数就成为闭包

2、闭包的特点
1、闭包内部可以访问外部函数的变量
2、延长外部函数变量的生存周期,因为当外部函数执行完毕之后,闭包可能会继续使用函数内部的变量,垃圾回收无法回收该函数内部的变量
3、保护私有变量,是的私有变量只能被闭包访问,不能被外部随意访问,

3、垃圾回收举例

var num = 6;
function outer() {
    
    
	var num = 1;
	function inner() {
    
    
		var n = 2;
		alert(n + num);
	}
	return inner
}
const test = outer();
test();

可以看到如果一个对象不再被引用,那么这个对象就会被GC回收。如果俩个对象互相引用,而不再被第3者所引用,那么这俩个互相引用的对象也会被回收。因为函数a被b引用,b又被a外的c引用,这就是为什么函数a执行后不会被回收的原因。

闭包的缺点:
滥用闭包会造成内存泄露,因为闭包中引用到的包裹函数中定义的变量都永远不会被释放,所以我们应该在必要的时候,及时释放这个闭包函数。

猜你喜欢

转载自blog.csdn.net/weixin_43124546/article/details/110878255