Javascript setTimeOut函数混乱

时间:2017-02-27 20:19:43

标签: javascript

你好,你能解释一下 setTimeOut(功能,时间) setTimeOut(function(),time)之间的区别

3 个答案:

答案 0 :(得分:0)

基本上,要么定义函数,要么稍后将其作为setTimeout的第一个参数传递:

function onTimeout() {

}

setTimeout(onTimeout, 3000);

...或者您在调用setTimeout时提供匿名函数作为参数:

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

答案 1 :(得分:0)

以下示例将解释其中的区别:

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

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

在超时时调用匿名函数。

{{1}}

第一个示例调用已定义的函数,而另一个函数在程序上调用代码作为匿名函数。我根据需要使用它们。

答案 2 :(得分:0)

另外两个答案是正确的,但万一你的问题不是关于匿名函数,而是类似这样的事情

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

    setTimeout(onTimeout, 1000); // First form

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

不同之处在于,在第一种形式中,onTimeout函数在1秒后被调用,这通常是期望的结果。

在第二种形式中,立即调用Timout,并且在1秒后调用返回的任何函数;在这种情况下,将调用undefined,因为console.log返回undefined。因此该函数将立即执行,1秒后不会发生任何事情。