为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

茅侃侃 2019-06-21 13:18:36
为什么当我使用setTimeout时会立即执行该方法?我试图用setTimeout编写一个简单的代码,而setTimeout只是不会等待它假设的时间,并且代码会立即执行。我做错什么了? $("#btn1").click(function () {     if ("something") {         $("#div1").slideUp();         setTimeout(testfunction(), 2000);     }  }
查看完整描述

3 回答

?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

您将立即调用该函数并调度其返回值。

用途:

setTimeout(testFunction, 2000);
                       ^


查看完整回答
反对 回复 2019-06-21
?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

删除括号

setTimeout(testfunction(), 2000);

如果要向函数发送参数,可以创建一个匿名函数,然后调用所需的函数。

setTimeout(function() {

    testfunction('hello');}, 2000);

编辑

有人建议发送一个字符串作为setTimeout的第一个参数。我建议不要这样做,也不要将字符串作为setTimeout的第一个参数发送,因为会使用val函数。这是一种糟糕的做法,如果可能的话,应该加以避免。


查看完整回答
反对 回复 2019-06-21
?
qq_遁去的一_1

TA贡献1725条经验 获得超7个赞

删除testfunction名称后面的括号:

setTimeout(testfunction, 2000);

原因是setTimeout的第一个参数应该是一个函数。参照系,而不是函数的返回值。在你的代码中,testfunction立即调用,并将返回值发送到setTimeout。


查看完整回答
反对 回复 2019-06-21
  • 3 回答
  • 0 关注
  • 2214 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信