JavaScript Settimeout函数混乱



你好,你可以解释我 settimeout(function,time) and settimeout(function(function(),time(time)

其他两个答案是正确的,但是以防万一您的问题与匿名函数有关,而是类似的问题

    function onTimeout(){
     console.log('foo');
    };
    setTimeout(onTimeout, 1000); // First form
    setTimeout(onTimeout(), 1000); // Second Form

区别在于,在第一种形式中,函数Ontimeout在1秒后调用,这通常是所需的结果。

在第二种形式中,在Timout上立即调用,返回的任何功能都在1秒后调用;在这种情况下,由于console.log返回未定义的返回,因此被称为未定义。因此该功能将立即执行,1秒钟后不会发生任何事情。

基本上,您要么定义该功能,然后将其作为setTimeout的第一个参数:

function onTimeout() {
}
setTimeout(onTimeout, 3000);

...否则您在调用setTimeout时给出匿名函数作为参数:

setTimeout(function() {
   // Do stuff
}, 3000);

以下示例将解释差异:

在超时时调用定义的函数。

setTimeout(my_function, 1000);
function my_function() {
    alert("Time is up!");
}

暂停时调用匿名函数。

setTimeout(function() {
    alert("Time is up!");
}, 1000);

第一个示例调用一个已经定义的函数,而另一个示例将代码运行为匿名函数。我两者都取决于需要。

最新更新