Javascript foo()、foo和function(){foo()}之间的js差异

Javascript foo()、foo和function(){foo()}之间的js差异,javascript,function,Javascript,Function,我有一个jquery对话框,上面有一个按钮(我的按钮,不是其中一个对话框按钮) 设置对话框后,我有以下代码: $('#bar').click(foo('baz')); 当我加载页面并显示对话框时,会运行foo(不按#bar) 如果代码为: $('#bar').click(foo); 或 福不跑 为什么呢? 我应该在哪里RTFM的指针,感激地收到 只是想澄清一下:为什么foo在没有按下按钮的情况下(即在对话框初始化时)在第一个实例中运行,而foo在后两个示例中不运行 哦,我想我已经解决了 在1

我有一个jquery对话框,上面有一个按钮(我的按钮,不是其中一个对话框按钮)

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

$('#bar').click(foo('baz'));
当我加载页面并显示对话框时,会运行foo(不按#bar)

如果代码为:

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

福不跑

为什么呢? 我应该在哪里RTFM的指针,感激地收到

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

哦,我想我已经解决了

在1。foo的结果将传递给click。 在2。我还是不确定。
在3。anon函数正在传递给click。

这不会等待click调用
foo

$('#bar').click(foo('baz'));
$('#bar').click(foo);
foo('baz')
在执行此行时执行,而不是在用户单击
#bar
时执行)

这不会将参数传递给
foo

$('#bar').click(foo('baz'));
$('#bar').click(foo);
这可能就是您所需要的(除非
foo
生成并返回一个函数,我想它不会):

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


详细说明:

当你执行

foo(bar); 
a = foo;
$('#bar').click(function(){foo('baz')});
使用参数
bar
执行
foo

你执行什么命令

foo(bar); 
a = foo;
$('#bar').click(function(){foo('baz')});
您为变量
a
指定值
foo
,该值可能是函数,也可能不是函数

当你打电话的时候

var a = function() {foo(bar)};
您创建了一个新的匿名函数,该函数在调用时执行
foo(bar)
,并将此新函数作为变量
a
的值给出

当你执行

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

您传递了一个新函数,调用时调用
foo('baz')
,作为
$('#bar')的参数。单击(
)。当您单击id为
bar

的元素时,JQuery调用此函数,而不是等待单击调用
foo

$('#bar').click(foo('baz'));
$('#bar').click(foo);
foo('baz')
在执行此行时执行,而不是在用户单击
#bar
时执行)

这不会将参数传递给
foo

$('#bar').click(foo('baz'));
$('#bar').click(foo);
这可能就是您所需要的(除非
foo
生成并返回一个函数,我想它不会):

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


详细说明:

当你执行

foo(bar); 
a = foo;
$('#bar').click(function(){foo('baz')});
使用参数
bar
执行
foo

你执行什么命令

foo(bar); 
a = foo;
$('#bar').click(function(){foo('baz')});
您为变量
a
指定值
foo
,该值可能是函数,也可能不是函数

当你打电话的时候

var a = function() {foo(bar)};
您创建了一个新的匿名函数,该函数在调用时执行
foo(bar)
,并将此新函数作为变量
a
的值给出

当你执行

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

您传递一个新函数,调用时调用
foo('baz')
,作为
$('#bar')的参数。单击(
.JQuery在您单击id为
bar

的元素时调用此函数。一切正常。我只是好奇为什么它在一个实例中没有按下按钮而在另一个实例中没有按下按钮。@user1925412:您认为在
bar(foo())中首先执行的是什么;
?我确信您一定已经将一个函数调用的结果传递给了另一个函数。
$(…)也是如此。单击(foo())
。我试图添加详细的解释,但我不确定到底是什么阻止了OP。@user1925412:不用担心,很多人似乎对此感到困惑……尽管曾经解释过它非常简单。谢谢你们两位的时间。一切都正常。我只是好奇为什么它在一次没有按下按钮的情况下运行,而不是我n另一个。@user1925412:您认为在
栏(foo())中首先执行的是什么;
?我肯定您已经将一个函数调用的结果传递给了另一个函数。对于
$(…)也是如此。单击(foo())
。我试图添加详细的解释,但我不确定到底是什么阻止了OP。@user1925412:不用担心,很多人似乎对此感到困惑…尽管曾经解释过它非常简单。谢谢你们两位抽出时间。
()
调用函数,
foo('baz'))
使用参数
'baz'
调用函数
foo
。非常简单。然后将
foo('baz')
的返回值传递给
。单击()
作为参数。
()
调用函数,
foo('baz'))
使用参数
'baz'
调用函数
foo
。非常简单。
foo('baz')
的返回值随后作为参数传递给
。click()