jQuery:将匿名回调重写为命名函数
jQuery: Rewriting Anonymous Callback to a Named Function
如果我这样做:
$('h1').slideUp('slow', function() { $('div:first').fadeOut(); });
h1会向上滑动,然后第一个div会淡出。
但是,如果我这样做:
function last() { $('div:first').fadeOut(); }
$('h1').slideUp('slow', last());
h1会向上滑动,同时div会淡出!
如何使我的第二个示例与第一个示例一样工作,其中 fadeOut() 在 slideUp() 之后被调用?
您不需要使用函数 return 值(通过调用函数获得),但函数体:
$('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
函数,然后将 return 值(这是 undefined
因为它 return 什么都没有)作为参数传递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
如果我这样做:
$('h1').slideUp('slow', function() { $('div:first').fadeOut(); });
h1会向上滑动,然后第一个div会淡出。
但是,如果我这样做:
function last() { $('div:first').fadeOut(); }
$('h1').slideUp('slow', last());
h1会向上滑动,同时div会淡出!
如何使我的第二个示例与第一个示例一样工作,其中 fadeOut() 在 slideUp() 之后被调用?
您不需要使用函数 return 值(通过调用函数获得),但函数体:
$('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
函数,然后将 return 值(这是 undefined
因为它 return 什么都没有)作为参数传递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