浅谈闭包

132 阅读1分钟

闭包的含义

闭包就是能够读取其他函数内部变量的函数

例如在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成"定义在一个函数内部的函数"。

在本质上,闭包是将函数内部和函数外部连接起来的桥梁

为什么使用闭包

全局变量:可以重复使用,但是会造成全局污染而且容易篡改

局部变量:仅函数内使用不会造成全局污染也不会被篡改,不能重复使用

所以,全局变量和局部变量的优缺点刚好相对,闭包的出现正好结合了全局变量和局部变量的优点

何时使用闭包

重用对象,但是又保护对象不被污染篡改时使用

闭包的表现形式

返回一个函数:在JS中非常常见

作为函数参数传递:无论通过什么方法将内部函数传递到它所在作用域外,无论在何处执行这个函数,都会产生闭包

回调函数:在定时器、事件监听、ajax请求等等或任何异步中,只要使用了回调函数,实际上就是在使用闭包