2012-07-23 61 views

回答

9

代碼

setTimeout($templateElement.hide(),2000); 

立即執行$templateElement.hide()並將其返回值(一個jQuery對象)進入setTimeout。你可能意味着:

setTimeout(function() { 
    $templateElement.hide(); 
}, 2000); 

...它通過一個函數參考setTimeout,待兩秒後調用。該函數在被調用時會執行hide

+0

愚蠢的問題:爲什麼第一個函數會立即執行,而第二個函數會傳遞給setTimeout並稍後執行? – Christoph 2012-07-23 08:13:55

+0

謝謝。現在我知道了關於setTimeout方法。它完美的工作。 – yuva 2012-07-23 08:24:37

+0

@Christoph:在上面的代碼中,我們定義了一個函數('function(){...}'),但我們永遠不會直接調用它(末尾沒有'()')。在OP的代碼中,末尾的「()」意味着「調用函數」。假設我有一個名爲'foo'的函數。在JavaScript中,'x = foo;'將函數引用賦給'x'(不調用它)。 'x = foo();'*調用*'foo'併爲其返回值賦值'x'。將函數傳遞給函數時也是如此,'setTimeout(foo,100)'將'foo'的引用傳遞給'setTimeout'; 'setTimeout(foo(),100)'立即調用foo並將其返回值傳遞給'setTimeout'。 – 2012-07-23 08:32:31