简单讲,闭包就是指有权访问另一个函数作用域中的变量的函数。
作用:封装私有变量,使变量始终保留在内存中不会被垃圾回收机制回收
坏处:不能滥用闭包变量一直没被垃圾回收机制回收可能会内存泄露
闭包就是能够记住当初所处作用域时候的变量,不管函数在哪里执行,都能够记住当初所处作用域时候的变量,并且会遮蔽新作用域的变量;
理解闭包的关键在于:外部函数调用之后其变量对象本应该被销毁,但闭包的存在使我们仍然可以访问外部函数的变量对象,这就是闭包的重要概念。
function fun (){
let a = 10;
return function(){
return a ++;
}
}
var inner = fun()
console.log(inner())// 10
console.log(inner())// 11
作用场景:防抖,节流