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>

go2 秒待たずにすぐに実行されます。

前に指摘した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 に答える