JS闭包

      一般来说,如果一个函数在执行开始的时候,会给其中定义的变量划分内存空间来保存这些变量,等到函数执行完毕之后,js的垃圾回收器会回收这些变量,释放内存。但是如果这个函数的内部又嵌套了另一个函数,而这个函数是有可能被外部函数调用到的,并且这个内部函数又使用了外部函数的某些变量,这种垃圾回收机制就会出现问题。

  所以,js解释器在遇到函数定义的时候,会自动把函数以及它可能使用到的变量(包括本地变量和父级变量和祖先变量等)一起保存起来,也就是构建一个闭包,这些变量将不会被垃圾回收期所回收。只有当内部函数不可能被调用以后(例如被删除了或者没有指针了),没有任何一个闭包引用的变量才会被下一次垃圾回收启动时所回收!

个人觉得就是垃圾回收时导致解决泄露的问题。

posted on 2016-07-19 20:29  LM·Q  阅读(125)  评论(0编辑  收藏  举报

导航