fs(),foo和function(){foo()}之间的区别

时间:2013-01-12 11:39:57

标签: javascript function

我有一个带有按钮的jquery对话框(我的按钮,而不是其中一个对话框按钮)。

设置对话框后,我有以下代码:

$('#bar').click(foo('baz'));

当我加载页面并显示对话框时,运行foo(不按#bar)。

如果代码是:

$('#bar').click(foo);

$('#bar').click(function(){foo('baz')});

foo没有跑。

为什么? 指向RTFM的地方,感激不尽。

只是为了澄清:为什么foo在没有按下按钮的情况下在第一个实例中运行(即在对话框初始化时),而foo不在后两个示例中运行。

哦,我想我刚刚解决了。

1.将foo的结果传递给click。 在2.我仍然不确定。 在3. anon函数被传递给click。

1 个答案:

答案 0 :(得分:3)

这不等待点击呼叫foo

$('#bar').click(foo('baz'));

(执行此行时执行foo('baz'),而不是在用户点击#bar时执行

这不会将参数传递给foo

$('#bar').click(foo);

这可能就是你所需要的(除非foo构建并返回一个函数,我猜它没有):

$('#bar').click(function(){foo('baz')});

它不起作用的事实可能是找不到标识为bar的元素,或者您没有点击它。


详细说明:

执行时

foo(bar); 

您使用参数foo执行bar

温你执行

a = foo;

您为变量a赋予值foo,这可能是一个函数。

致电时

var a = function() {foo(bar)};

创建一个新的匿名函数,在调用时执行foo(bar),并将此新函数作为变量a的值。

执行时

$('#bar').click(function(){foo('baz')});

你传递一个新函数,在调用时调用foo('baz')作为$('#bar').click(的参数。当您单击标识为bar的元素时,JQuery会调用此函数。