0

最初の応答が受信される前に2番目の呼び出しが発生するように、fooがすばやく連続して2回呼び出された場合、fooは安全ですか?安全であれば、正しい「param」値が正しい「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

2 に答える 2

1

var xmlHttp関数fooスコープにバインドされています。関数が呼び出されるたびに、新しいxmlHttpが設定されます。関数パラメータについても同じことが起こります。パラメータもそのまま関数スコープにバインドされvar xmlHttpます。したがって、この場合、関数が呼び出されるたびに、 theparamと the の両方の変数が同じスコープにバインドされます。これが、それぞれが正しい応答に一致するxmlHttp理由です。paramxmlHttp

詳細については、javascript クロージャーについてお読みください。

于 2013-02-26T15:22:19.923 に答える
0

var変数を関数にスコープします。その関数を呼び出すたびに、その名前の新しい変数が作成されます。

于 2013-02-26T15:17:10.580 に答える