闭包的变量一直在内存吗?怎么清除?

function f1(){

  let n = 999;

  function f2(){

    console.log(n);

  }

  return f2;

}

const f = f1();

f();

上面的函数中n这个变量会一直在内存吗?如果闭包使用的变量很大,怎么清除呢?

阅读 3k
5 个回答

函数内,闭包函数外 n=null 试试。
话说这样的写法有啥意义呢?为啥不写两个函数相互调用?

销毁函数,函数闭包变量会清除:let f = f1(); f = null

f() 执行完之后,如果f没有被其他地方持有,js垃圾回收机制会把n回收清理掉,不需要手动清除

逻辑上来说失去引用的对象都会被GC。所以一般都是需要保持闭包的引用。
但是现代浏览器都会有一个自动的回收机制,并不是失去了引用就会马上释放掉内存的。

推荐问题
logo
Microsoft
子站问答
访问
宣传栏