闭包:闭包是有权访问另一个函数作用域变量的函数,内层函数访问外层函数作用域。构造特点 外层函数局部变量+内层函数
注意点:闭包不一定就必须要有return,这同时也意味着不一定会存在内存泄漏
闭包的关键点在作用域链,我们在调用函数执行函数的时候我们会区先去创建执行上下文环境,在这期间会有创建阶段和执行阶段,创建阶段有作用域,变量对象和this指向三种,而作用域链包括当前函数变量对象加父级变量对象,而js是单线程的,闭包就是依靠父级变量对象才可以访问其他函数的局部变量,如果在外部因为不在函数执行环境内当然不能去访问函数。此外如果闭包需要被使用应当去return
闭包的作用:防止全局变量污染,创建私有变量、持久化保存数据
常见js的应用节流,防抖