setTimeout 函数执行代码没有任何延迟。 Javascript [重复]

Posted

技术标签:

【中文标题】setTimeout 函数执行代码没有任何延迟。 Javascript [重复]【英文标题】:setTimeout function executing code without any delay . Javascript [duplicate] 【发布时间】:2020-07-22 05:55:28 【问题描述】:

谁能解释为什么会这样。我在 JS 中创建了一个函数,并尝试在 60 秒后使用 setTimeout 函数调用它。但它会在页面加载后立即运行。为什么会发生这种情况并且 setTimeout 没有延迟功能代码?下面是代码。

<script>

function first()


document.getElementById('addProductText').style.color="#32A067";


setTimeout(first(),60000);

</script>

【问题讨论】:

【参考方案1】:

使用不带括号的函数调用():

setTimeout(first, 6000);

这样你是在引用函数,而不是立即调用它。

工作示例:

function first() 
  document.getElementById('addProductText').style.color = "#32A067";

setTimeout(first, 6000);
&lt;div id="addProductText"&gt;Hello World!&lt;/div&gt;

【讨论】:

感谢塔马斯。明白了:)【参考方案2】:

你应该只传递name of the function而不调用它:

function first()
     console.log("Hello")

setTimeout(first, 60000);

【讨论】:

您实际上不必给出函数的名称,您还有另一种选择,它也可以在调用目标函数之前提供一个操作多个指令的函数。见repl.it/repls/BelovedShallowBusinesssoftware 为了防止过早调用,重要的是你给出一个函数的引用,无论它是目标函数还是匿名函数。

以上是关于setTimeout 函数执行代码没有任何延迟。 Javascript [重复]的主要内容,如果未能解决你的问题,请参考以下文章

SetTimeout直接执行没有延时

"setTimeout" VS "debounce" 插件 - 延迟事件的代码执行

计时器setTimeout()

setTimeout 的用法

闭包应用之延迟函数setTimeout

关于setTimeout的妙用