我正在尝试从在线教程学习ajax,但我不明白第20行, 为什么handleServiceResponse函数没有括号()? 为什么它不能与括号一起使用?
非常感谢,你们这里是最好的。
答案 0 :(得分:0)
xmlHttp.onreadystatechange = handleServerResponse;
function handleServerResponse() {
...
}
与:
相同xmlHttp.onreadystatechange = function() {
...
}
在这种情况下,onreadystatechange
期望被设置为函数定义。
为了演示您可以在这里使用括号的用法,这里有一个例子:
xmlHttp.onreadystatechange = generateServerResponseHandler();
function generateServerResponseHandler() {
return function() {
...
};
}
您可以看到立即调用函数generateServerResponseHandler
,但onreadystatechange
仍设置为函数定义。
在JavaScript中,功能是“一等公民”。维基百科有一个很好的写作:http://en.m.wikipedia.org/wiki/First-class_function