例如,要调用名为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;
}
}
答案 0 :(得分:6)
在这一行:
window.onload = makeRequest;
函数makeRequest
未调用。您只需将函数指针指定给onload
事件。当加载DOM时,浏览器会自动调用此事件,并且仅在此时调用它指向的函数(这可能会在稍后发生,但会让您产生立即调用该函数的印象)。
答案 1 :(得分:3)
在表达式的右侧使用时,它是一个引用。即
var x = myfunction;
将x设置为myfunction的“指针”。
var x = myfunction();
会将myfunction返回的值存储到x。