jQuery / JavaScript:垃圾收集器清除我的变量?

时间:2011-02-04 15:33:07

标签: javascript jquery garbage-collection

我见过很多类似的问题,但似乎没有人回答我的问题。

var mainDataObject = null; // Global

// Called when DOM is ready with $(function() { ... })
$.ajax({
    type: "GET",
    dataType: "json",
    url: '...',
    success: function(json) {
        mainDataObject = json;
    }
});

mainDataObject 或其内容会在一段时间后被清除吗?这取决于浏览器吗?请注意,我需要该变量持续页面的整个生命周期。

我看到的问题是,随机地看来mainDataObject被清空了。我无法重现这个问题,因为它发生在使用各种浏览器和操作系统的随机用户身上。

2 个答案:

答案 0 :(得分:3)

这取决于创建的上下文mainDataObject

如果它是一个函数(-context),当函数结束时,变量将从垃圾收集器中清除。

如果它在全局(-context)中,它将一直保留,直到您明确地将其设置为null或者页面被卸载。

当然,如果你以某种方式在某个地方创建一个闭包,那么关闭创建mainDataObject的上下文的函数会将Activation object复制到它的[[Scope]]中并且内存看起来不会要清除。

答案 1 :(得分:0)

任何javascript变量都会持续很长时间,你可以参考它。

你需要担心的是变量不是垃圾收集的,而不是相反的。