闭包
闭包是什么
外层函数包裹受保护的变量和内层函数量,外层函数将内层函数返回到外部。
优点: 重用变量,保护变量被污染
缺点:占用内层。滥用会造成内存泄漏
如何释放闭包:将引用内存函数对象的外部变量设置为 null
外层函数将内层函数返回到外部的方法:
- return
- 赋值给全局变量
- 将内层函数包裹在对象或数组内返回
应用场景:
- 函数作为参数传递(作用域的例子)
- 函数作为返回值
1 | function outer() { |
例子
1 | var fn = null; |
总结
- 闭包是在函数被调用执行的时候才被确认创建的。
- 闭包的形成,与作用域链的访问顺序有直接关系。
- 只有内部函数访问了上层作用域中的变量对象,才会形成闭包。
应用场景
- 柯里化
- 模块化