闭包的变量一直在内存吗?怎么清除?
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