# 闭包
闭包是这样一种机制: 函数嵌套函数, 内部函数可以引用外部函数的参数和变量,参数和变量不会被垃圾回收机制所收回.
这里涉及到几个概念:
- 函数嵌套函数
- 作用域(全局变量和局部变量)
变量的访问规则 - 垃圾回收机制(garbage collection)
js内部不断扫描内存,并清理无引用对象(自动完成);function aa(){ var num=10; function bb(){ num++ console.log(num); } return bb; } //bb(); //无法直接访问函数内部的函数 aa()();//11 aa()();//11 aa()();//11 var closure = aa(); closure();//11 closure();//12 closure();//13
# 闭包的好处
- 可以让一个变量长期驻扎在内存当中不被释放
- 避免全局变量的污染, 和全局变量不同, 闭包中的变量无法被外部使用
- 私有成员的存在, 无法被外部调用, 只可以自己内部使用
结论:
- 闭包是指有权访问另一函数作用域中的变量的函数
- 闭包,可以访问函数内部的局部变量,并让其长期驻留内存
- 由于闭包会携带包含它的作用域(运行环境),因此会比其他函数占用更多内存,过度使用闭包可能会造成性能问题。
[练习]
- 点击按钮打印当前索引值
- tab标签切换