0

我很难理解第一个论点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)

坦率地说,我不明白除了“一个有效,一个无效”之外的区别。为什么前者也不尊重延迟论点?

4

2 回答 2

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`
于 2013-08-12T07:17:36.973 回答
-3
var go = function () {
  console.log('GO GO GO!');
};

setTimeout(go, 2000);
于 2013-08-12T07:18:59.883 回答