关于javascript内存泄露的一个问题

看代码,下面的代码有内存泄漏吗?

var user = {name: 'tom', age: 20, gender: 'male'}
var test = document.getElementById('test')
test.onclick = function() {
 test.innerHTML = user.name;
}
// ...后面还有很多其他操作,最后把user对象释放掉
user = null; // 释放对象
阅读 2.6k
5 个回答

我觉得放函数里就可能会了。

function fn() {
    var user = {name: 'tom', age: 20, gender: 'male'};
    var test = document.getElementById('test');
    test.onclick = function() {
         console.log(user);
    }
    user = null;
}

运行 fn() 后,触非你把test.onclick事件移除,否则 user 变量始终不会被垃圾回收,尽管它仅仅是个 null。

内存泄露是没有

但是点击的时候会报错

因为user为null 所以 user.name 这里报错

null 是释放了user的数据内存,但是这个变量的内存没释放吧 其他地方使用user 有可能为null报错

emmmm....你还是先把代码逻辑理清楚吧....顺带提一句, JS中几乎是没有内存泄漏这一回事的。JS有自动的GC垃圾回收机制...当然IE5内核情况下除外(闭包)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题