1.什么是闭包
对于闭包,通常有两种解释,
一种是:闭包是一个函数,是一个在函数外部能够读取其他函数内部变量的函数,而外部函数就形成了一个闭包。更加通俗的讲,把一个函数作为返回值,就是闭包最经典的场景。
官方来讲:闭包是函数与其周围状态的组合。
通过一段代码来直接感受一下什么是闭包:
<script>
function Fn(){
var a = 1;
return function (){
console.log(a);
a++;
return a;
}
}
let resFn = Fn();
console.log(resFn());
</script>
2.闭包的写法及注意
1. 函数嵌套函数:闭包必须有函数嵌套函数的结构
2.内部函数可以访问外部函数的变量:内部函数可以访问外部函数中的变量,即使在外部函数执行完毕后,这些变量仍然可以被访问。
3.外部函数返回内部函数:外部函数必须返回内部函数才能形成闭包。
3.原理
js中的变量,函数在执行的时候都会被加载到栈中,执行完毕在弹出,当使用闭包的时候,函数执行完成后,不会弹出,因为其他的地方还要加载其内部变量.
4.闭包的优点
1.局部变量常驻内存,像是全局变量一样,常驻内存,不会污染全局命名空
2.产生 私有变量
5.闭包的缺点
使用不当会很容易造成内存泄露(内存中能存的东西越来越少,像是其他部分被泄露了一样)