我已经看到了许多类似的问题,但是似乎没人能回答我的问题。
var mainDataObject = null; // Global
// Called when DOM is ready with $(function() { ... })
$.ajax({
type: "GET",
dataType: "json",
url: '...',
success: function(json) {
mainDataObject = json;
}
});
会在一段时间后清除mainDataObject或其内容吗?这取决于浏览器吗?请注意,我需要该变量在页面的整个生命周期中持续存在。
我看到的问题是随机出现
mainDataObject
为空。我无法重现该问题,因为使用各种浏览器和操作系统的随机用户都会遇到此问题。 最佳答案
这取决于在哪个上下文中创建mainDataObject
。
如果它是一个函数(上下文),则该函数结束时将从垃圾回收器中清除该变量。
如果它位于global(-context)之内,它将一直保留到您将其显式设置为null
或页面被卸载为止。
当然,如果您以某种方式创建了一个闭包,则在创建mainDataObject
的上下文上关闭的函数会将Activation object
复制到它的[[Scope]]
中,并且似乎不会清除内存。