我在JavaScript中有一些关于垃圾收集的读物,据他们说,函数的局部变量是在函数返回后收集的(except for the cyclical references,需要打破圆圈才能使GC工作)。
我想要了解的是,在此背景下“返回的功能”是什么意思?
是不是意味着:
该函数必须返回值。
或简单地说:
函数调用已结束。
常识(至少根据我的意思)建议2),但在我错了的情况下:
return;
以使垃圾收集器完成其工作吗?答案 0 :(得分:6)
不包含return
语句的函数会隐式返回undefined
。因此,“结束”和“返回”的功能是相同的。
关于垃圾收集,请记住,函数返回后不会立即收集本地变量;他们可以在此时成为垃圾收集的合格。只要浏览器认为必须运行,或者认为它可以在不影响可见性能的情况下运行(并且依赖于实现),垃圾收集器就会运行。