Javascript初学者:setTimeout隐藏/显示问题?

问题描述:

我想通过下面的代码在2000ms后隐藏一个元素。Javascript初学者:setTimeout隐藏/显示问题?

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

我是新的一个jQuery和Java的脚本。我希望任何人都清楚我的疑惑。

+2

代码在哪里? – adeneo 2012-07-23 07:58:03

代码

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