垃圾收集函数中的对象数组

Garbage Collecting array of objects in a function

假设我有以下功能:

function myfunc() {
    var data = [];

    for (var i=0; i<10; i++) {
        data[i] = {foo:"bar"};
    }

    // do something with data
}

在函数结束时我不再需要任何数据。释放它需要什么?

据我所知,如果无法从全局对象访问某些内容,则会被 GC 处理。如果 data 不可访问,那么其中的所有元素也将不可访问,因为 data 是对它们的唯一引用。那么使 data 及其中的所有内容成为 GCable 的正确方法是什么?

如果我把它放在函数的末尾,data = null 会成功吗?

我什至需要做点什么吗?由于datamyfunc()中的一个局部变量,它不应该在函数完成后被销毁,从而使data中的数据成为GCable吗?

是的,您不需要做任何事情。

如果没有其他引用刚刚超出范围的对象,它们将被垃圾回收。

这些其他引用可能来自意想不到的地方(例如函数调用后意外关闭,或将内容附加到浏览器 DOM),但总的来说该机制非常可靠。它还负责参考循环。