首页 > 代码库 > 在IE下闭包引起的一个内存泄露。

在IE下闭包引起的一个内存泄露。

因为在IE的低版本中,JScript对象和COM对象时使用不同的垃圾回收机制。

因为在闭包中包含了包含函数的变量对象,如果我们的闭包引用循环中引用

包含函数的变量对象中的引用时,只要匿名函数存在,该引用至少存在一次,

因此占用的内存永远也不会被释放。

我们平时写的一个例子:

function eve(){                            var ele = document.getElementById("btn");                                 ele.onclick = function(){                                         console.log( ele.id );                                     }                     }

解决代码:

function eve(){                              var ele = document.getElementById("btn");                              var id = ele.id;                                 ele.onclick = function(){                                             console.log( id );                                          };                               ele = null;                    }

 

在IE下闭包引起的一个内存泄露。