关于闭包释放的时机?

来源:18-5 题目讲解-4:再学闭包

h4ck3r

2020-06-25

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

1回答

双越

2020-06-25

不会。

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

0
4
双越
回复
洋__
不排除某些、最新版的 js 引擎会做这些优化。但以我之前的了解,应该是不能被销毁的,例如下面的代码。 function create() { let a = 100 return function () { console.log(a) } } // 一个自执行函数,函数执行完作用域内的变量会自动销毁,即 fn 会自动销毁,那此时这个闭包数据会不会被释放呢? (function () { let fn = create() fn() })()
2020-07-12
共4条回复

一天时间高效准备前端技术一面 匹配大厂面试要求

针对时下面试高频考点,帮助新人js面试快速通关

4694 学习 · 1681 问题

查看课程