You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何setTimeout()无法将_.run()作为函数参数传入?

问题原因解析

你的核心问题出在函数调用和函数引用的区别上:

  • 错误写法setTimeout(_.run(), 1000)里,_.run()是立即执行函数——代码运行到这一行时,_.run会马上被调用,它的返回值(如果没写return就是undefined)会被传给setTimeout。但setTimeout的第一个参数需要的是待执行的函数本身,不是函数执行后的结果,所以这种写法会导致_.run立刻执行,且1秒后没有任何预期的延迟操作。

  • 可行写法setTimeout( () => { _.run() }, 1000)里,你传给setTimeout的是一个匿名箭头函数的引用。1秒后,这个匿名函数才会被执行,进而调用_.run(),这就实现了延迟执行的效果。

补充一种更简洁的正确写法

如果_.run内部没有依赖this的指向问题(你的代码里_.run是箭头函数,this绑定不会变,完全适用),你可以直接传函数引用,不用包裹箭头函数:

setTimeout(_.run, 1000);

这里_.run没有加括号,意味着你把函数本身传给了setTimeout,1秒后setTimeout会自动调用这个函数。

内容的提问来源于stack exchange,提问作者extensa5620

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:04:50