我读过一些关于 JavaScript 中垃圾收集的文章,据他们说,函数的局部变量在函数返回后被收集(except for the cyclical references 需要打破循环才能使 GC 工作)。
我想了解的是,在此上下文中“返回的函数”是什么意思?
是否表示:
函数必须有返回值。
或者简单地说:
函数调用结束。
常识(至少对我而言)建议 2),但在这种情况下我错了:
- 那些不返回值的函数呢?
- 我是否应该向不返回任何内容的函数添加一个空的
return;
以使垃圾收集器完成它的工作?
最佳答案
不包含return
语句的函数隐式返回undefined
。所以函数“结束”和“返回”是一回事。
关于垃圾回收,请记住局部变量不会在函数返回后立即被回收;那时他们可以有资格进行垃圾回收。垃圾收集器会在浏览器认为它必须运行时运行,或者认为它可以在不影响可见性能的情况下运行(这取决于实现)。
关于JavaScript - 函数调用后的垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18774296/