0

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();
}
4

1 回答 1

1

是的,垃圾收集器会在函数执行后立即自动销毁变量foo(因为变量是本地的,因此不能在给定范围之外使用)。

这也是为什么特别使用用var关键字声明的局部变量是一种好习惯的原因之一。

请注意,在您的特定上下文中,由于您执行异步 ajax 调用,因此您的函数在 ajax 调用仍在运行时返回,因此垃圾收集器将xmlHttp在函数返回且调用完成时销毁您的变量

于 2013-02-27T08:34:40.337 回答