我想通過下面的代碼在2000ms後隱藏一個元素。Javascript初學者:setTimeout隱藏/顯示問題?
setTimeout($templateElement.hide(),2000);
我是新的一個jQuery和Java的腳本。我希望任何人都清楚我的疑惑。
我想通過下面的代碼在2000ms後隱藏一個元素。Javascript初學者:setTimeout隱藏/顯示問題?
setTimeout($templateElement.hide(),2000);
我是新的一個jQuery和Java的腳本。我希望任何人都清楚我的疑惑。
代碼
setTimeout($templateElement.hide(),2000);
立即執行的$templateElement.hide()
並將其返回值(一個jQuery對象)進入setTimeout
。你可能意味着:
setTimeout(function() {
$templateElement.hide();
}, 2000);
...它通過一個函數參考爲setTimeout
,待兩秒後調用。該函數在被調用時會執行hide
。
愚蠢的問題:爲什麼第一個函數會立即執行,而第二個函數會傳遞給setTimeout並稍後執行? – Christoph 2012-07-23 08:13:55
謝謝。現在我知道了關於setTimeout方法。它完美的工作。 – yuva 2012-07-23 08:24:37
@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
代碼在哪裏? – adeneo 2012-07-23 07:58:03