setTimeout - コールバックの文字列を使用して回避するためにどのように?

StackOverflow https://stackoverflow.com/questions/797115

  •  18-09-2019
  •  | 
  •  

質問

setTimeoutを使用している場合、あなたが文字列に実行したいコードを配置する必要があります:

setTimeout('alert("foobar!");', 1000);

しかし、私は、私は、変数内の参照を持っている機能を実行したいです。私はこれを行うことができるようにしたい。

var myGreatFunction = function() { alert("foobar!"); };
// ...
setTimeout('myGreatFunction();', 1000);

(実際の生活の中で、アラートがコードとmyGreatFunctionのより長いビットがsetTimeoutが呼び出された内の他の関数へのパラメータとして周りに渡されるですが。)

もちろん、タイムアウトが発生したときに、それが実行されないので、myGreatFunctionが認識機能ではありません。

私はjavascriptのは私がこれをやらせたいが、それはしていません。

setTimeout(function() { myGreatFunction(); }, 1000);

このラウンド良い方法はありますか?

役に立ちましたか?

解決

あなたが任意の引数を指定してmyGreatFunctionを呼び出す必要がない場合は、あなたがsetTimeout機能の参照を渡すことができる必要があります:

setTimeout(myGreatFunction, 1000);

また、あなたは常に、それは(あなたが引用符で囲まれたコードをラップするときに何が起こるかである)を評価する必要がsetTimeoutコードを渡すことは避けるべきです。代わりに、匿名関数内のコードをラップします:

setTimeout(function() {
    // Code here...
}, 1000);

の詳細については、Mozillaの開発センターでのsetTimeoutページを参照してください。ます。

スティーブ

他のヒント

それはあなたがそれを行うことはできませんと言った誰ですか?

それがない、コード -

setTimeout(function() { myFunction(); }, 1000);

は完全に有効です。

scroll top