满足以下特点的叫做闭包:
1. 函数嵌套函数
2. 内部函数使用外部函数的形参和变量(函数内部可以访问外部函数的作用域)
3. 被引用的形参和变量就不会被【垃圾回收机制所回收】(保存局部变量)
4. IE9之间版本的内存泄露问题。《JavaScript高级编程》书中建议:由于闭包会携带包含它的函数的作用域,因此会比其他函数占用更多内容,过度使用闭包,会导致内存占用过多。也就是说可用的内存减少,这就是内存泄漏。
好处:
1. 希望一个变量常驻在内存当中
2. 避免全局变量污染
3. 可以声明私有成员
用法:
1. 模块化代码
2. 在循环中直接找到对应元素的索引
3. 立即执行函数 (function(){}())