2017-02-27 135 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); 

第一個示例調用已定義的函數,而另一個示例程序將程序運行爲匿名函數。我根據需要使用兩者。