Javascript jQuery:将匿名回调重写为命名函数

Javascript jQuery:将匿名回调重写为命名函数,javascript,jquery,callback,anonymous-function,Javascript,Jquery,Callback,Anonymous Function,如果我这样做: $('h1').slideUp('slow', function() { $('div:first').fadeOut(); }); function last() { $('div:first').fadeOut(); } $('h1').slideUp('slow', last()); h1将向上滑动,然后第一个div将淡出 但是,如果我这样做: $('h1').slideUp('slow', function() { $('div:first').fadeOut();

如果我这样做:

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

$('h1').slideUp('slow', last());
h1将向上滑动,然后第一个div将淡出

但是,如果我这样做:

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

$('h1').slideUp('slow', last());
h1将向上滑动,同时div将淡出


如何使我的第二个示例与第一个示例相同,其中在slideUp()之后调用fadeOut()?

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

$('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
函数,然后将返回值(因为它不返回任何内容,所以返回值
未定义)作为参数传递给
slideUp
的回调函数


希望此示例有助于您理解:

函数外部(){
函数内部(){};
返回内部;
}
警报(外部);//返回外部函数体

警报(外部());//返回外部函数的返回值,即内部函数上次的返回值last()
,函数vs调用函数。请解释一下?我不明白有什么区别。
slideUp
需要一个函数
last
是一个函数
last()
调用函数
last
。不一样。你需要引用包含函数的变量,你不想调用函数并返回它返回的任何内容。在第二个示例中添加括号类似于编写
$('h1').slideUp(function(){$('div:first').fadeOut();}()),注意额外的括号,JavaScript的工作方式与PHP不同?因为在PHP中,每当我需要调用一个函数时,我都必须使用括号。不,这与此无关-你不需要调用函数,
slideUp
会在需要时调用它。看看您的原始代码:
function(){$('div:first').fadeOut();}
您没有调用这个函数,对吗?PHP也是如此。我添加了一个示例来帮助您更好地理解。感谢您提供示例代码片段Shomz。它帮助我理解JavaScript是如何工作的。