闭包是什么
一个函数就是一个闭包,闭包可以访问他外部,但是外部不能访问闭包内的东西。一个函数a,能访问并改变一个全局变量,a是一个闭包;一个函数a内的函数b,能访问并修改函数a的局部变量,b也是一个闭包。所以,闭包的重点是是否能够修改在他外部的变量。
定义在函数内部的函数
缺点1:数据会一直存在内存,占用内存,容易卡死;
缺点2:会在父函数外部,改变父函数内部的变量值。
<script>
var add; //全局变量,谁都能用
function fn1(){
let num = 1; //fn1的局部变量,只有fn1内部能用
add = function(){ //add是在fn1内的闭包
num++
}
return function fn2(){
document.write(num);
}
}
let fn2 = fn1(); //执行fn1(),未执行add,num=1
fn2();//
add();//
fn2();//
</script>