2017-02-27 137 views

回答

0

其他两个答案都是正确的,但以防万一你的问题不是关于匿名函数,而是像这样

function onTimeout(){ 
    console.log('foo'); 
    }; 

    setTimeout(onTimeout, 1000); // First form 

    setTimeout(onTimeout(), 1000); // Second Form 

不同的是,在第一种形式,功能onTimeout被称为后1秒,这通常是期望的结果。

在第二种形式中,上Timout被立即调用,而不管??? 1秒后称为该功能;在这种情况下,未定义将被调用,因为console.log返回未定义。所以这个函数会立即执行,1秒后什么都不会发生。

0

基本上之间的区别,无论是你定义的功能,以后你通过它为setTimeout第一个参数:

function onTimeout() { 

} 

setTimeout(onTimeout, 3000); 

...或者你给一个匿名函数的参数,你叫setTimeout

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

以下示例将解释不同之处:

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

setTimeout(my_function, 1000); 

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

超时时调用匿名函数。

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

第一个示例调用已定义的函数,而另一个示例程序将程序运行为匿名函数。我根据需要使用两者。