javascript闭包与内存泄露

clipboard.png
这里如果作为一个非dom对象就不会引起内存泄漏么?
比如
function wo(){

var x="我呀";
return function(){
    return x;
}

}
var box=wo();
alert(box());
这个box如果不置为Null 也会内存泄露的吧?

阅读 3.4k
5 个回答

var box=wo();
alert(box());
这个box如果不置为Null 也会内存泄露的吧?

这样不会存在内存泄漏,因为alert(box());调用了一次,之后没有引用,就被垃圾回收了;

而:你看的书上的,是在onclick事件里,这个事件是一直在的,不会被垃圾回收;

不设置为null,那个对象就一直挂在顶级对象上

链接里的链接反倒解除了我的疑惑

我个人认为,这个是会发生内存泄漏

你 return 出来的 function 中引用到了其父级函数作用域中的变量
后来被赋值的 box 是一直可以访问 x 的,变量 x 也将一直存在下去
因为引擎不知道 box 什么时候会再次被调用,它就认为 x 的存在是有价值的,不会将其回收

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