Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 向函数提供命名函数时,函数不工作_Jquery_Anonymous Function - Fatal编程技术网

Jquery 向函数提供命名函数时,函数不工作

Jquery 向函数提供命名函数时,函数不工作,jquery,anonymous-function,Jquery,Anonymous Function,我不知道为什么这两段代码不能产生相同的结果。在第一个示例中,我创建了一个函数并传递它,在第二个示例中,我编写了一个匿名函数 function funct() { $("p").slideUp(1000); } $(document).ready(funct()); $(document).ready(function() { $("p").slideUp(1000); }); 第二个有效,第一个无效。有人能告诉我为什么吗?当你这样做时: $(docu

我不知道为什么这两段代码不能产生相同的结果。在第一个示例中,我创建了一个函数并传递它,在第二个示例中,我编写了一个匿名函数

 function funct() {
        $("p").slideUp(1000);
 }
 $(document).ready(funct());

 $(document).ready(function() {
        $("p").slideUp(1000);
 });
第二个有效,第一个无效。有人能告诉我为什么吗?

当你这样做时:

$(document).ready(funct());
您正在立即执行
func()
,并将其返回值传递给
.ready()
方法,这不是您想要的。它不是在函数执行之前等待文档准备就绪。您可能想做的是:

$(document).ready(funct);
这样,您只需将函数引用传递给
.ready()
方法,它就可以稍后而不是立即执行该函数,然后它的行为将与匿名函数示例相同

要立即执行一个函数,请将参数放在它后面,如
funct()
。要将函数作为引用传递给您要传递给的函数/方法,请省去参数,只需传递名称
func

$(document)。ready()将函数作为其参数,因此您必须将函数传递给它。 要么这样做:

function funct() {
     return function() {
           $("p").slideUp(1000);
     }        
 }
 $(document).ready(funct());
或者正如其他人所说,只需将函数的引用作为参数传递,如下所示:

$(document).ready(funct);

为了理解为什么这不起作用,让我们检查一下执行以下代码时会发生什么:

$(document).ready(funct());
首先执行
funct()
。这可能会也可能不会返回某些内容。如果它需要像
return 1
这样的内容,那么它将作为
$(document.ready(…)
的参数提供。在这种情况下,返回
null
undefined
。您需要的是提供对
$(document).ready(…)
的函数引用。您可以通过将
funct
传递给它来实现这一点(与任何其他变量非常相似)


类似地,拥有一个匿名函数将返回该匿名函数的函数引用,然后由
$(document)使用。ready(…)

为什么不将
()
作为ready处理程序删除并保存额外的代码呢?如果这样做有效,我不建议通过调用其他函数来返回函数引用,只是使用
funct()
而不是
funct
。我只是编辑了我的答案。根据他的需要,返回函数可能更好(例如,根据某些条件返回不同的函数)