2013-09-29 1 views
0
enter image description here

Почему функция внутри функции не нуждается в круглых скобках? JavaScript?

Я пытаюсь научиться Ajax с онлайн учебника, но я не понимаю, в строке 20, почему не handleServiceResponse функции есть круглые скобки()? и почему это не будет работать с круглыми скобками?

Большое спасибо, вы, ребята, здесь лучшие.

ответ

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

+0

xmlHttp.onreadystatechange = handleServerResponse; означает, что onreadystatechange хранит функцию handleServerResponse? –

+0

Да, он действует как указатель на эту функцию. В JavaScript функции являются «гражданами первого класса». В Википедии есть отличная запись: http://en.m.wikipedia.org/wiki/First-class_function –

 Смежные вопросы

  • Нет связанных вопросов^_^