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
xmlHttp.onreadystatechange = handleServerResponse; означает, что onreadystatechange хранит функцию handleServerResponse? –
Да, он действует как указатель на эту функцию. В JavaScript функции являются «гражданами первого класса». В Википедии есть отличная запись: http://en.m.wikipedia.org/wiki/First-class_function –