我对javascript中的函数是如何操作的感到有点困惑。我知道它们都是对象,但这会如何改变我将它们用作参数的方式呢?
例如,如果我试图使用回调函数,其中第二个参数在1000ms之后求值...
$(this).fadeIn(1000,function(){alert('done fading in');});为什么我不能达到同样的效果:
$(this).fadeIn(1000,alert('done fading in'));如果我这样做了,它会同时计算这两个值。也就是说,(此)元素淡入,同时弹出警报。
当我调用alert(arg)时,我不是在创建一个传递给fadeIn()的新对象吗?
这到底是如何工作的呢?
发布于 2012-01-03 16:20:19
在这里
$(this).fadeIn(1000,alert('done fading in'));fadeIn()认为它的第二个参数是什么?这是调用
alert('done fading in')在调用fadeIn()之前,我们调用了()。
在这种情况下
$(this).fadeIn(1000,function(){alert('done fading in');});我们有一个物体
function(){alert('done fading in');}fadeIn()在正确的时间调用它。
发布于 2012-01-03 16:24:46
当你写的时候:
$(this).fadeIn(1000,alert('done fading in'));通过将函数名和括号放在此名称后面,可以立即调用名为alert的函数。并将此调用的结果传递给fadeIn -这是未定义的,因为警报总是返回未定义的消息。
当你写的时候
$(this).fadeIn(1000,function(){alert('done fading in');});您可以创建一个函数对象,并将此函数对象传递给fadeIn。因此,在fadeIn完成后,它可以调用此函数。
它与以下内容相同:
// create function
var callback = function () { alert('done fading in'); };
// and pass this function to fadeIn
$(this).fadeIn(1000, callback);但是当你写的时候:
var callback = alert('done fading in');
$(this).fadeIn(1000, callback);然后,您将立即调用alert,并将其传递给fadeIn值,该值将返回未定义。
发布于 2012-01-03 16:19:40
在第一行中,第二个参数是一个方法。在第二行它是一个方法调用。
你也可以这样写它
function fadeInCallback() {
alert('done fading in');
}
$(this).fadeIn(1000, fadeInCallback);所以我们要做的是传入一个对fadeInCallback的引用,这样jQuery fadeIn函数在淡入淡出之后就可以调用fadeInCallback了。
第二行将执行
alert('done fading in');在执行jQuery fadeIn函数之前
https://stackoverflow.com/questions/8709456
复制相似问题