基本概念
什么是闭包?
简单的说,函数嵌套函数,内部函数就是闭包
function outerFun() {
function innerFun() {
}
}
此时innerFun()就是闭包
function outerFun() {
let a = 10;
function innerFun() {
console.log(a);
}
return innerFun();
}
let fun = outerFun();
fun();
正常情况下,函数执行完成,内部变量会销毁(释放内存空间)
闭包情况下, 内部函数没有执行完成,外部函数变量不会被销毁
闭包的应用
闭包可以封装一段代码,实现变量的私有化
let module = (function () {
let a = 10;
let b = 20;
function add() {
return a + b;
}
function sub() {
return a - b;
}
return {
add,
sub
}
})()
console.log(module.add());
console.log(module.sub());