xmlHttp是否会收集垃圾,如果是,何时?
function foo (param)
{
var xmlHttp = GetXmlHttpRequestObject();
xmlHttp.onreadystatechange = function()
{
if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
{
// do something involving param and xmlHttp.responseXML
}
}
xmlHttp.open("GET", "GetAsyncData.ashx", true);
xmlHttp.send();
}
答案 0 :(得分:1)
是的,一旦执行了函数foo
,垃圾收集器就会自动销毁变量(因为变量是本地的,因此不能在给定的范围之外使用)。
这也是为什么特别使用用var
关键字声明的局部变量的良好做法的原因之一。
请注意,在您的特定上下文中,由于您执行异步ajax调用,您的函数在ajax调用仍在运行时返回,因此垃圾收集器将在返回该函数时销毁您的xmlHttp
变量并且电话已经完成