☆什么是闭包

定义:闭包是能够读取其他函数内部变量的函数,在js中,只有函数内部的子函数才能读取局部变量,所以闭包一般是一个函数套函数的结构,将子函数返回到外面用一个全局变量存储起来,这就叫闭包。

特点:①函数套函数,返回子函数。
   ②返回的子函数存在一个全局变量中。
           ③执行外层函数后,该函数的局部变量会被存储在堆中,不会被垃圾回收机制回收。

优点:①防止变量被污染
           ②可以保存私有变量

缺点:会造成内存泄漏

  函数中用var定义的变量在该函数运行完即被销毁。而在闭包中,内层函数调用了外层函数的局部变量,并且返回给外面的全局变量,该局部变量会被存储起来。因为外层函数返回的是一个函数(返回了内层函数),函数就是一个对象,所以该局部变量被保存到了堆中,即使将接收的那个全局变量设置为null,也不会将该局部变量销毁,这样就保存了外层函数的私有变量了,同时也可能会造成内存泄漏。

猜你喜欢

转载自www.cnblogs.com/wuqilang/p/11204625.html