首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么时候在javascript中声明一个新的(匿名)函数?

问什么时候在javascript中声明一个新的(匿名)函数?
EN

Stack Overflow用户
提问于 2012-01-03 16:08:54
回答 3查看 306关注 0票数 12

我对javascript中的函数是如何操作的感到有点困惑。我知道它们都是对象,但这会如何改变我将它们用作参数的方式呢?

例如,如果我试图使用回调函数,其中第二个参数在1000ms之后求值...

代码语言:javascript
复制
$(this).fadeIn(1000,function(){alert('done fading in');});

为什么我不能达到同样的效果:

代码语言:javascript
复制
$(this).fadeIn(1000,alert('done fading in'));

如果我这样做了,它会同时计算这两个值。也就是说,(此)元素淡入,同时弹出警报。

当我调用alert(arg)时,我不是在创建一个传递给fadeIn()的新对象吗?

这到底是如何工作的呢?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-03 16:20:19

在这里

代码语言:javascript
复制
 $(this).fadeIn(1000,alert('done fading in'));

fadeIn()认为它的第二个参数是什么?这是调用

代码语言:javascript
复制
 alert('done fading in')

在调用fadeIn()之前,我们调用了()。

在这种情况下

代码语言:javascript
复制
$(this).fadeIn(1000,function(){alert('done fading in');});

我们有一个物体

代码语言:javascript
复制
 function(){alert('done fading in');}

fadeIn()在正确的时间调用它。

票数 19
EN

Stack Overflow用户

发布于 2012-01-03 16:24:46

当你写的时候:

代码语言:javascript
复制
$(this).fadeIn(1000,alert('done fading in'));

通过将函数名和括号放在此名称后面,可以立即调用名为alert的函数。并将此调用的结果传递给fadeIn -这是未定义的,因为警报总是返回未定义的消息。

当你写的时候

代码语言:javascript
复制
$(this).fadeIn(1000,function(){alert('done fading in');});

您可以创建一个函数对象,并将此函数对象传递给fadeIn。因此,在fadeIn完成后,它可以调用此函数。

它与以下内容相同:

代码语言:javascript
复制
// create function
var callback = function () { alert('done fading in'); };
// and pass this function to fadeIn
$(this).fadeIn(1000, callback);

但是当你写的时候:

代码语言:javascript
复制
var callback = alert('done fading in');
$(this).fadeIn(1000, callback);

然后,您将立即调用alert,并将其传递给fadeIn值,该值将返回未定义。

票数 5
EN

Stack Overflow用户

发布于 2012-01-03 16:19:40

在第一行中,第二个参数是一个方法。在第二行它是一个方法调用。

你也可以这样写它

代码语言:javascript
复制
function fadeInCallback() {
    alert('done fading in');
}

$(this).fadeIn(1000, fadeInCallback);

所以我们要做的是传入一个对fadeInCallback的引用,这样jQuery fadeIn函数在淡入淡出之后就可以调用fadeInCallback了。

第二行将执行

代码语言:javascript
复制
alert('done fading in');

在执行jQuery fadeIn函数之前

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8709456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档