我很难理解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)
时要求返回值。
答案 0 :(得分:7)
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`
答案 1 :(得分:-3)
var go = function () {
console.log('GO GO GO!');
};
setTimeout(go, 2000);