1

我创建了一个在 180 万毫秒后运行的函数(我使用 1.8 秒进行测试),但我使用的超时似乎从来没有工作过——即使它与我用于其他所有网站的超时完全相同我制作的应用程序/网站,永远。

核心代码:

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 回答