调用JavaScript函数

时间:2011-04-08 06:49:57

标签: javascript

例如,要调用名为makeRequest的函数,我了解到您需要执行makeRequest();。如果你只做makeRequest;它是对函数的引用(我想)。然而,看看这段代码(当我测试它时它起作用),它在没有parens的window.onload上调用makeRequest;

有人可以解释一下吗?

window.onload = makeRequest;
var xhr = false;

function makeRequest() {
    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else {
        if (window.ActiveXObject) {
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e) { }
        }
    }

    if (xhr) {
        xhr.onreadystatechange = showContents;
        xhr.open("GET", "colors.xml", true);
        xhr.send(null);
    }
    else {
        document.getElementById("updateArea").innerHTML = "Sorry, but I couldn't create an XMLHttpRequest";
    }
}

function showContents() {
    if (xhr.readyState == 4) {
        if (xhr.status == 200) {
            var outMsg = xhr.responseText;
        }
        else {
            var outMsg = "There was a problem with the request " + xhr.status;
        }
        document.getElementById("updateArea").innerHTML = outMsg;
    }
}

2 个答案:

答案 0 :(得分:6)

在这一行:

window.onload = makeRequest;

函数makeRequest 未调用。您只需将函数指针指定给onload事件。当加载DOM时,浏览器会自动调用此事件,并且仅在此时调用它指向的函数(这可能会在稍后发生,但会让您产生立即调用该函数的印象)。

答案 1 :(得分:3)

在表达式的右侧使用时,它是一个引用。即

var x = myfunction;

将x设置为myfunction的“指针”。

var x = myfunction();

会将myfunction返回的值存储到x。