闭包:有权访问另一个函数作用域中的变量的函数。(创建闭包的常见方式,就是一个函数内部创建另一个函数或二级函数引用一级函数的变量,例子如下)
例子:
function closureFn() { var a = 3 function sonFn() { return ++a; } return sonFn } let changeNum = closureFn(); console.log(changeNum()) // 4 console.log(changeNum()) // 5
文字+图解:有权访问 另一个函数b的 作用域中的 变量i 的函数a, 即a函数就是闭包
1.有权访问另一个函数作用域中的变量的函数,就是一个函数内部创建另一个函数
2.作用是可以读取函数内部变量 和 防止污染全局数据()
3.缺陷是变量始终保存在内存中,导致内存泄漏
4.定时器、事件监听器、 Ajax请求、跨窗口通信、Web Workers或者任何其他的异步(或者同步)任务中,只要使 用了回调函数,实际上就是在使用闭包!(模块暴露)
以妓会友,评赞走起