JavaScript - 函数调用后的垃圾收集

标签 javascript garbage-collection

我读过一些关于 JavaScript 中垃圾收集的文章,据他们说,函数的局部变量在函数返回后被收集(except for the cyclical references 需要打破循环才能使 GC 工作)。

我想了解的是,在此上下文中“返回的函数”是什么意思?

是否表示:

  1. 函数必须有返回值。

    或者简单地说:

  2. 函数调用结束。

常识(至少对我而言)建议 2),但在这种情况下我错了:

  • 那些不返回值的函数呢?
  • 我是否应该向不返回任何内容的函数添加一个空的 return; 以使垃圾收集器完成它的工作?

最佳答案

不包含return 语句的函数隐式返回undefined。所以函数“结束”和“返回”是一回事。

关于垃圾回收,请记住局部变量不会在函数返回后立即被回收;那时他们可以有资格进行垃圾回收。垃圾收集器会在浏览器认为它必须运行时运行,或者认为它可以在不影响可见性能的情况下运行(这取决于实现)。

关于JavaScript - 函数调用后的垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774296/

相关文章:

c# - 强制垃圾收集以确保 GC 以后不会检查相当大的对象是个好主意吗?

garbage-collection - 我可以重新分配 OCaml GC block 吗?

javascript - 在不使用 URL 的情况下获取下一页上具有相同名称的输入类型值

javascript - 如何把一个div变成图片上传到服务器?

javascript - 仅当从 firebase 获取所有数据时如何使用 limitTo 过滤

java - 我的服务器为每个请求创建多少个对象

超出 Java GC 开销限制。大量的 HashMap 和优先级队列。我能做些什么?

java - 跨 java 堆的年轻部分和终身部分的大数组分配

javascript - 在网页浏览器控件内播放视频(使用 javascript 添加)原因 "error #2148 try loosening flash security setting"

javascript - 通过 id-Extjs 将数据加载到模型中