2个特点:函数嵌套函数,内层函数可以访问外层函数的变量和参数 2个作用:防止变量和拉圾回收(变量持久化);防止变量和参数被外部污染(变量只在闭包内部可访问) 1个风险:滥用可能会造成内存泄露
它的作用如下 实现模块化&可以缓存函数&封装私有变量&实现函数柯里化&防抖&节流 实现模块化;
const myMoudle=(function(){
let count=0
function increment(){
count++;
}
function reset(){
count=0
}
function getCount(){
return count
}
return{
increment,
reset,
getCount
}
})()
myMoudle.increment()
console.log(myMoudle.getCount())//输出1
闭包的真正作用是 突破作用域 常规是的 有一个默认的作用域链。用bind,apply,call可以改变this的指向 而闭包可以突破 参数的作用域链