2015-02-01 2 views
0

Если я делаю это:JQuery: Переписывание Анонимного обратного вызова для именованной функции

$('h1').slideUp('slow', function() { $('div:first').fadeOut(); }); 

h1 будет скользить вверх, то первый DIV будет исчезать.

Однако, если я делаю это:

function last() { $('div:first').fadeOut(); } 

$('h1').slideUp('slow', last()); 

h1 будет скользить вверх и DIV будет исчезать в то же время!

Как сделать второй пример работы таким же, как первый, где fadeOut() называется ПОСЛЕ slideUp()?

+0

'последний == последний()', функция против вызова функции!. – elclanrs

+0

elclanrs, не могли бы вы объяснить? Я не понимаю, в чем разница. –

+1

'slideUp' ожидает функцию. 'last' - это функция. 'last()' вызывает функцию 'last'. Не то же самое. – elclanrs

ответ

1

Вам не нужно использовать значение возврата функции (которую можно получить, вызвав функцию), но тело функции:

$('h1').slideUp('slow', last); 

То, что вы сделали это так же, как это:

var returned = last();    // call to last returns undefined 
            // so returned has the value undefined 
$('h1').slideUp('slow', returned); // simply sending undefined as a callback 

Таким образом, вы просто выполнение last встроенной функции, а затем передать возвращаемое значение (которое undefined, так как он ничего не возвращает) в качестве параметра к slideUp - функция обратного вызова.


Надежда данный пример поможет вам понять:

function outer() { 
 
    function inner() {}; 
 
    return inner; 
 
} 
 

 
alert(outer); // returns the outer function body 
 
alert(outer()); // returns the outer function's return value, which is the inner function

+0

Итак, JavaScript работает иначе, чем PHP? Поскольку в PHP, когда мне нужно вызвать функцию, я должен использовать скобки. –

+0

Нет, это не о том, что вам не нужно вызывать функцию, «slideUp» вызовет ее при необходимости. Посмотрите на свой исходный код: 'function() {$ ('div: first'). FadeOut(); } 'Вы не называете эту функцию, верно? Это то же самое в PHP. – Shomz

+1

Я добавил пример, который поможет вам лучше понять. – Shomz

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