0

在此处输入图像描述

我正在尝试从在线教程中学习ajax,但是我在第20行不明白,为什么handleServiceResponse函数没有括号()?为什么它不能与括号一起使用?

非常感谢,你们是最棒的。

4

1 回答 1

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

于 2013-09-29T01:41:37.470 回答