闭包:定义在一个函数内部的函数
因此
- 可以访问外部函数的变量,
- 其内部变量只能内部可访问
为什么要使用闭包?
- 闭包时块级作用域,可以定义自己的变量,避免变量命名冲突,污染外部变量 (使用场景一)
- 封装私有变量,对外暴露get,set方法或其中一种(使用场景二)
- 保存外部函数的变量(使用场景三)
使用闭包需要注意:
使用场景三:
当闭包被赋值给一个生命较长的变量时,其所依赖的父函数的变量也被长时间保存在内存中,占用内存,
因此不能滥用闭包,否则会造成网页的性能问题,在IE中可能导致内存泄露。必要时需要将没用的局部变量清除,
如普通数据类型变量赋值为undefined,对象的属性可以使用delete删除某对象属性或者方法