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

function f1(){

  let n = 999;

  function f2(){

    console.log(n);

  }

  return f2;

}

const f = f1();

f();

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


回答:

闭包中的变量会一直存储在内存中,类似全局变量
https://segmentfault.com/a/11...


回答:

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


回答:

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


回答:

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


回答:

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

以上是 闭包的变量一直在内存吗?怎么清除? 的全部内容, 来源链接: utcz.com/p/933660.html

回到顶部