3

我读过一些关于 JavaScript 垃圾收集的文章,根据他们的说法,函数的局部变量是在函数返回之后收集的(除了需要打破循环以使 GC 工作的循环引用)。

我想了解的是,在这种情况下,“函数返回”是什么意思?

是否意味着:

  1. 该函数必须返回值。

    或者简单地说:

  2. 函数调用已结束。

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

  • 不返回值的函数呢?
  • 我应该return;在不返回任何内容的函数中添加一个空值以使垃圾收集器完成其工作吗?
4

1 回答 1

9

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

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

于 2013-09-12T21:10:45.553 回答