js中的闭包
一.什么是闭包
闭包官方的解释是:闭包就是能够读取其他函数内部变量的函数。由于在javascript中,只有函数内部的子函数才能读取局部变量,所以闭包可以理解成“定义在一个函数内部的函数。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
通俗话讲闭包就是:函数f内部定义了一个函数,且该函数调用了函数f内部的变量,此时这个函数就是闭包。例如:
二.闭包的优点
js中在函数外面无法访问函数内部的变量,但是闭包的出现解决了这一现象。闭包延长了变量的生命周期,使得函数外也可以访问函数内部的变量。例如:
三.闭包的缺点
正是由于闭包延长了变量的生命周期,所以会造成内存空间的泄漏,因为系统对于函数内部变量的回收不及时。如下: