![](/img/trans.png)
[英]where do i put jQuery .fade() function in ajax success callback?
[英]do I need parenthesis when using a named function as an jquery ajax success callback
如果我有一个较早定义的函数,则在指定将其用于成功回调时是否需要包括括号?
如果我这样做有什么区别?
如
function fish_food(){//do something}
$.ajax({
url: '/',
success: fish_food
});
要么
$.ajax({
url: '/',
success: fish_food()
});
fish_food
本身(不带括号)充当对功能对象的引用。 它允许您将引用传递给该函数,以便日后调用。
fish_food()
(带括号)是一个函数调用表达式,它使函数被执行。 函数代码将被评估并以可选返回的值运行。
使用您提供的AJAX代码(以及涉及回调的所有异步JavaScript),您想使用fish_food
版本(不带括号)。 这会将AJAX代码传递给您的成功功能参考,一旦AJAX代码完成了往返服务器的往返行程,就将异步执行该代码。
没有。
括号会告诉浏览器,必须立即执行函数fish_food
,并且必须将值返回给success
属性。
您需要无括号的版本。 原因是括号告诉JavaScript立即执行该函数,而不是仅按名称引用它,因此, success
回调实际上是在执行AJAX调用时调用fish_food()
的结果(可能会是涉及undefined
的错误)。
这会工作
$.ajax({
url: '/',
success: fish_food
});
您不需要括号。 使用parens将调用该函数,它所需要的只是一个名称,该名称等效于C / C ++中的函数指针。
带有括号会导致函数在那儿执行,这就是为什么需要第一个版本,否则成功存储函数的返回值的原因。
$.ajax({
url: '/',
success: fish_food
});
是正确的。
当您使用success: fish_food()
,它将立即执行并将返回值设置为成功。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.