我见过很多类似的问题,但似乎没有人回答我的问题。
var mainDataObject = null; // Global
// Called when DOM is ready with $(function() { ... })
$.ajax({
type: "GET",
dataType: "json",
url: '...',
success: function(json) {
mainDataObject = json;
}
});
mainDataObject 或其内容会在一段时间后被清除吗?这取决于浏览器吗?请注意,我需要该变量持续页面的整个生命周期。
我看到的问题是,随机地看来mainDataObject
被清空了。我无法重现这个问题,因为它发生在使用各种浏览器和操作系统的随机用户身上。
答案 0 :(得分:3)
这取决于创建的上下文mainDataObject
。
如果它是一个函数(-context),当函数结束时,变量将从垃圾收集器中清除。
如果它在全局(-context)中,它将一直保留,直到您明确地将其设置为null
或者页面被卸载。
当然,如果你以某种方式在某个地方创建一个闭包,那么关闭创建mainDataObject
的上下文的函数会将Activation object
复制到它的[[Scope]]
中并且内存看起来不会要清除。
答案 1 :(得分:0)
任何javascript变量都会持续很长时间,你可以参考它。
你需要担心的是变量不是垃圾收集的,而不是相反的。