1.闭包
1.1什么是闭包
全局变量var声明的会污染环境,局部变量声明的let无法永久存储于内存,于是出现了闭包
闭包就是一个函数嵌套在一个函数里面,并在这个大函数里面返回到这个小函数
<script>
function fa(){
let a=10;
function fb(){
a--;
console.log(a);
}
return fb;
}
var fn=fa();//一调用就输出9 8 7 ...
//用完后,我们可以把他释放掉,不用担心内存泄露
fn=null;
</script>
闭包要满足四个条件
1.有函数嵌套(一个函数嵌套在一个函数里面)
2.内部函数引用外部作用域的变量参数(fb函数引用fa的a)
3.返回值是函数(fb)
4.创建一个对象函数,让其长期驻留(var fn=fa())
1.2为什么要用闭包
因为全局变量容易污染环境,而局部变量又无法长期贮存内存
于是我们徐娅一种机制,既能长期保存变量又不污染全局,这就是闭包