闭包的简单解析

程序员在初期都会遇到关于闭包的问题,
我们先来看下什么是闭包
闭包:内部函数总是可以访问其所在的外部函数中声明的参数和变量,即使在其外部函数被返回(寿命终结)了之后。
特点

  1. 让外部访问函数内部变量成为可能;

  2. 局部变量会常驻在内存中;

  3. 可以避免使用全局变量,防止全局变量污染;

  4. 会造成内存泄漏(有一块内存空间被长期占用,而不被释放)

知道闭包的定义后那我们怎样来使用闭包的场景

闭包找到的是同一地址中父级函数中对应变量最终的值

function a(){
var num = 0;
function b(){
	num+;
	console.log(num);
}
return b; 
}
var global =100;
var temp = a();
temp();

当a函数运行后,里面构成的作用域我们已经知道了,要明白AO的生命周期是在a函数运行完毕后自动销毁的,函数里面的return b;就宣布a函数运行完毕,而此时返回的是b函数的一个引用,这就等于又声明了一个b函数,注意b函数里面又用到了a函数里面的num字段,而a函数已经销毁了,这里就产生了闭包,我们做如下图解:
在这里插入图片描述
b函数声明的数据正是a函数运行后的GO+AO,a函数运行结束后的销毁操作就是不再指向AO,回到最初声明的模样。

b函数运行:
在这里插入图片描述
以上就是就是简单闭包的理解,学会了吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值