为什么当我使用setTimeout时会立即执行该方法?

为什么当我使用setTimeout时会立即执行该方法?

我试图用setTimeout编写一个简单的代码,而setTimeout只是不会等待它假设的时间,并且代码会立即执行。我做错什么了?

 $("#btn1").click(function () {
    if ("something") {
        $("#div1").slideUp();
        setTimeout(testfunction(), 2000);
    }
 }


茅侃侃
浏览 2266回答 3
3回答

慕盖茨4494581

您将立即调用该函数并调度其返回值。用途:setTimeout(testFunction, 2000);                        ^

素胚勾勒不出你

删除括号setTimeout(testfunction(), 2000);如果要向函数发送参数,可以创建一个匿名函数,然后调用所需的函数。setTimeout(function() {     testfunction('hello');}, 2000);编辑有人建议发送一个字符串作为setTimeout的第一个参数。我建议不要这样做,也不要将字符串作为setTimeout的第一个参数发送,因为会使用val函数。这是一种糟糕的做法,如果可能的话,应该加以避免。

qq_遁去的一_1

删除testfunction名称后面的括号:setTimeout(testfunction, 2000);原因是setTimeout的第一个参数应该是一个函数。参照系,而不是函数的返回值。在你的代码中,testfunction立即调用,并将返回值发送到setTimeout。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript