我很难理解 setTimeout
的第一个参数以及延迟参数如何影响它。
我理解setTimeout
的方式是:
setTimeout(foo, don't even think about foo until x miliseconds has passed)
但是如果我们考虑这段代码:
<div id="mine"></div>
<script type="text/javascript">
function go(){
var myDiv = document.getElementById("mine");
myDiv.innerHTML = "Hello World";
}
setTimeout(go(), 2000)
</script>
go
立即运行,无需等待 2 秒。
正如我之前的许多人所指出的,setTimeout(go(), 2000)
正在要求返回值,而我实际上想要 setTimeout(go, 2000)
。
坦白说,我不明白除了“一个有效,一个无效”之外的区别。为什么前者不尊重延迟论点?
最佳答案
JavaScript 中的函数是一个对象。 go
是函数对象,go()
执行 go
函数并返回其值。 setTimeout
需要一个函数,因此是 go
,而不是 go()
。
function go(){
return 'hello';
}
console.log(go); //=> function go(){}, a function object
console.log(go()); //=> 'hello', a string returned by the function `go`
关于javascript - 对 setTimeout 中的第一个参数感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18181384/