闭包:
1.密闭的容器,类似set,map容器,存储数据的
2.闭包是一个对象,存放数据 key:value
形成条件
1.函数嵌套
2.内部函数引用外部函数的局部变量
闭包优点:
延长外部函数局部变量生命周期
闭包缺点:
长时间占用容易内存泄露
建议
用完闭包及时清除,销毁
//简单闭包
function out(){
var a = 1;
function inner() {
console.log(a);
}
inner()
}
out()
//稍微复杂的闭包
function fun(a,b) {
//let a = 0
console.log(b)
return {
fun:function (m) {
//let m = 1
return fun(m,a)
}
}
}
/*let a = fun(0)
a.fun(1)
a.fun(2)
a.fun(3);//undefined 0 0 0*/
// let b = fun(0).fun(1).fun(2);//undefined 0 1
let c = fun(0).fun(1);//undefined 1
c.fun(2)
c.fun(3)