你好,你可以解释我 settimeout(function,time) and settimeout(function(function(),time(time)
其他两个答案是正确的,但是以防万一您的问题与匿名函数有关,而是类似的问题
function onTimeout(){
console.log('foo');
};
setTimeout(onTimeout, 1000); // First form
setTimeout(onTimeout(), 1000); // Second Form
区别在于,在第一种形式中,函数Ontimeout在1秒后调用,这通常是所需的结果。
在第二种形式中,在Timout上立即调用,返回的任何功能都在1秒后调用;在这种情况下,由于console.log返回未定义的返回,因此被称为未定义。因此该功能将立即执行,1秒钟后不会发生任何事情。
基本上,您要么定义该功能,然后将其作为setTimeout
的第一个参数:
function onTimeout() {
}
setTimeout(onTimeout, 3000);
...否则您在调用setTimeout
时给出匿名函数作为参数:
setTimeout(function() {
// Do stuff
}, 3000);
以下示例将解释差异:
在超时时调用定义的函数。
setTimeout(my_function, 1000);
function my_function() {
alert("Time is up!");
}
暂停时调用匿名函数。
setTimeout(function() {
alert("Time is up!");
}, 1000);
第一个示例调用一个已经定义的函数,而另一个示例将代码运行为匿名函数。我两者都取决于需要。