闭包的简单解析

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

  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函数运行:
在这里插入图片描述
以上就是就是简单闭包的理解,学会了吗?

©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页