当函数可以记住并访问所在的词法作用域,即使函数是在当前词法作用域之外执行,这时就产生了闭包。--- 你不知道的JavaScript上卷
用法
即想重用变量又保护变量不被污染的一种编程方法
使用场景
希望给一个函数保存一个既可以反复使用,又不会被外界污染的专属局部变量时候就使用闭包
局部变量无法共享和长久的保存,而全局变量可能造成变量污染,所以我们希望有一种机制既可以长久的保存变量又不会造成全局污染。
创建过程
- 使用外层函数包裹要保护的变量和使用变量的内层函数
- 在外层函数内部返回内层函数
- 调用外部函数,用变量接住返回的内层函数对象