为什么函数内部函数不需要括号? JavaScript的?

时间:2013-09-29 00:51:17

标签: ajax function parentheses

enter image description here

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

非常感谢,你们这里是最好的。

1 个答案:

答案 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