jQuery:重写匿名回调到命名函数

时间:2015-02-01 21:48:22

标签: javascript jquery callback anonymous-function

如果我这样做:

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

h1将向上滑动,然后第一个div将淡出。

但是,如果我这样做:

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

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

h1会向上滑动,div会同时淡出!

如何使我的第二个示例与第一个示例相同,其中fadeOut()被称为AFTER slideUp()?

1 个答案:

答案 0 :(得分:2)

您不需要使用函数返回值(通过调用函数获得),但是函数体:

$('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' s回调函数。


希望这个例子能帮助你理解:



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