質問: function() { console.log(1); } setTimeout(func(), 1000); console.log(2); ``` 同じ処理のように思うのですが、順序が変化するので、その理由を知りたいです。
回答: misak1さんの仰られている通り、第一引数に()はつけません。 ()をつけた場合、 **func()を実行した結果**がsetTimeoutに設定されてしまいます。 なので、次のようなコードの場合このような動きになります。 ``` var fn_a = function(){ console.log("out_a"); }; var func = function() { console.log(1); return fn_a; // 関数を返す。 }; setTimeout(func(), 1000); console.log(2); ``` 1. `func()`が実行され`1`が出力される。 2. return された`fn_a`関数がsetTimeoutにセットされる。 3. `console.log(2);`で`2`が出力される。 4. 1秒後にsetTimeoutから`fn_a()`が実行され、`out_a`が出力される。