【重点突破】——如何快速识别并解决“闭包问题”?
一、引言
什么是“闭包”?它既是前端程序中常常会碰到的一个千年大坑,也是这个大坑唯一可以解决自身的办法。很多大牛对闭包都有自己的解释,但每个人的解释可能都不太一样,看太多反而混乱,这里,我会用一个小例子,尽量简单的说明这个“闭包”到底是什么,怎么识别?如何解决?
二、闭包
- 什么是? 一种对象,向外公开了特定的数据,以及操作这种数据的方法,供外部调用,就是闭包
- 为什么?
- 全局变量:随处可见,可反复使用。缺点:极易被污染(易被篡改)。
- 局部变量:不会被污染。缺点:仅函数内可用,且不可重用(不易被篡改)。
- 三大特点
- 外层函数
- 受保护的变量
- 内层函数
三、如何形成闭包
外层函数的作用域对象无法释放,导致:外层函数的局部变量被保存下来(可以重用)。
- 第一步:将受保护的变量和操作变量的函数封装在一个外层函数;
- 第二步:外层函数,要将内层函数队形返回;
- 第三步:使用者调用外层函数,获得内层函数对象。
四、快速识别
- 向外抛出对象,一定是闭包。