1

180万ミリ秒後に実行される関数を作成しました(テスト目的で1.8秒を使用しています)が、使用しているタイムアウトは機能していないようです-他のすべてのWebで使用したものとまったく同じですが私が今までに作ったアプリ/サイト。

コアコード:

setTimeout(Test, 10);

var Test = function(){
    alert("KEMAH");
};

Jsfiddle: http://jsfiddle.net/zbMCC/1/

4

4 に答える 4

5

関数式の後にタイムアウトを配置します。

var Test = function(){
    alert("KEMAH");
};
setTimeout(Test, 10);

関数式 (変数に割り当てられた関数) は、スコープ内で「巻き上げ」られません。したがって、コードは表示順に実行されます。

一方、関数宣言はスコープに巻き上げられているため、次のコードは完全に実行されます。関数の宣言方法に注意してください。Test変数に関数を割り当てるのではなく、名前を持つ関数として宣言しますTest

//because JavaScript treats function declarations as if they were declared
//UP HERE <--------------.
                       //|
setTimeout(Test, 10);  //|
                       //|
function Test(){ //------'
    alert("KEMAH");
};

JavaScript はコードを次のように処理します。

  1. 変数宣言
  2. 関数宣言
  3. 変数の割り当て/操作 (これは、他のすべてが表示される順序で実行される場所です)
于 2012-11-25T11:41:28.010 に答える
0

への変更:

setTimeout(Test, 10);

function Test(){
    alert("KEMAH");
};

またはvar Test = function {...使用前に置いてください。

入間はTestその時だからsetTimeoutundefined

于 2012-11-25T11:42:00.580 に答える
0

または、関数を内部に与えることができます

setTimeout(function(){
    alert("KEMAH");
}, 10);
于 2012-11-25T11:42:56.677 に答える
0

編集:

私は(複雑なシナリオで)使用しています:

setInterval("GeneratedFunctionName()", 60000); // 60s
于 2012-11-25T11:43:16.120 に答える