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

时间:2016-11-03 13:49:43

标签: javascript garbage-collection garbage

假设我有以下功能:

function myfunc() {
    var data = [];

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

    // do something with data
}

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

据我所知,如果无法从全局对象中获取某些内容,则会进行某些操作。如果data无法访问,那么内部的所有元素也将无法访问,因为data是对它们的唯一引用。那么,data以及GCable中的所有内容的正确方法是什么?

如果我把它放在函数的末尾,data = null会不会这样做?

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

1 个答案:

答案 0 :(得分:2)

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

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

这些其他引用可能来自意外的位置(例如,在函数调用中存活的意外闭包,或者将内容附加到浏览器DOM),但通常该机制非常可靠。它也会处理参考周期。