请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

关于闭包释放的时机?

function create() {
  let a = 100
  return function () {
    console.log(a)
  }
}
let fn = create()
fn() // 这里的 fn 函数执行完成以后,create 函数作用域里变量 a 会被释放吗?

正在回答 回答被采纳积分+3

1回答

双越 2020-06-25 21:03:32

不会。

闭包的数据,永远不会被释放。

0 回复 有任何疑惑可以回复我~
  • 洋__ #1
    老师这个不对吧,后面再跟上fn = null;应该就好了?这样解决内存泄漏,还能释放内部函数
    回复 有任何疑惑可以回复我~ 2020-07-11 21:01:22
  • 双越 回复 洋__ #2
    fn = null 也不行。而且,闭包数据不释放,并不是内存泄漏。
    回复 有任何疑惑可以回复我~ 2020-07-12 14:51:58
  • 洋__ 回复 双越 #3
    https://segmentfault.com/q/1010000020309203
    老师我看网上的讨论说的是没有保存这个函数的引用了,这个函数和函数所形成的闭包也就会被一并销毁。
    回复 有任何疑惑可以回复我~ 2020-07-12 20:34:52
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信