将命名函数用作jQuery ajax成功回调时需要括号吗?

mjr*_*mjr 1 javascript ajax jquery

如果我有一个较早定义的函数,则在指定将其用于成功回调时是否需要包括括号?

如果我这样做有什么区别?

function fish_food(){//do something}

$.ajax({
    url: '/',
    success: fish_food
});
Run Code Online (Sandbox Code Playgroud)

要么

$.ajax({
    url: '/',
    success: fish_food()
});
Run Code Online (Sandbox Code Playgroud)

Jed*_*rds 5

fish_food它本身(没有括号)充当对功能对象的引用。它允许您将引用传递给该函数,以便日后调用。

fish_food()(带有括号)是一个函数调用表达式,它使函数被执行。函数代码将被评估并以可选返回的值运行。

使用您提供的AJAX代码(以及涉及回调的所有异步JavaScript),您想要使用该fish_food版本(不带括号)。这会将AJAX代码传递给您的成功功能参考,一旦AJAX代码完成了往返服务器的往返行程,就将异步执行该代码。