闭包的含义
闭包就是能够读取其他函数内部变量的函数例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成"定义在一个函数内部的函数"。
在本质上,闭包是将函数内部和函数外部连接起来的桥梁
为什么使用闭包
全局变量:可以重复使用,但是会造成全局污染而且容易篡改
局部变量:仅函数内使用不会造成全局污染也不会被篡改,不能重复使用
所以,全局变量和局部变量的优缺点刚好相对,闭包的出现正好结合了全局变量和局部变量的优点
何时使用闭包
重用对象,但是又保护对象不被污染篡改时使用闭包的表现形式
返回一个函数:在JS中非常常见
作为函数参数传递:无论通过什么方法将内部函数传递到它所在作用域外,无论在何处执行这个函数,都会产生闭包
回调函数:在定时器、事件监听、ajax请求等等或任何异步中,只要使用了回调函数,实际上就是在使用闭包