Javascript设置超时函数混淆
您好,您能解释一下设置超时(函数,时间)和设置超时(函数(),时间)基本上,您可以定义函数,然后将其作为Javascript设置超时函数混淆,javascript,Javascript,您好,您能解释一下设置超时(函数,时间)和设置超时(函数(),时间)基本上,您可以定义函数,然后将其作为设置超时的第一个参数传递: function onTimeout() { } setTimeout(onTimeout, 3000); setTimeout(function() { // Do stuff }, 3000); …或者在调用setTimeout时将匿名函数作为参数: function onTimeout() { } setTimeout(onTimeout,
设置超时的第一个参数传递:
function onTimeout() {
}
setTimeout(onTimeout, 3000);
setTimeout(function() {
// Do stuff
}, 3000);
…或者在调用setTimeout
时将匿名函数作为参数:
function onTimeout() {
}
setTimeout(onTimeout, 3000);
setTimeout(function() {
// Do stuff
}, 3000);
以下示例将解释这种差异:
在超时时调用定义的函数
setTimeout(my_function, 1000);
function my_function() {
alert("Time is up!");
}
setTimeout(function() {
alert("Time is up!");
}, 1000);
在超时时调用匿名函数
setTimeout(my_function, 1000);
function my_function() {
alert("Time is up!");
}
setTimeout(function() {
alert("Time is up!");
}, 1000);
第一个示例调用一个已经定义的函数,而另一个示例在程序上以匿名函数的形式运行代码。我根据需要使用这两种方法。其他两个答案都是正确的,但以防万一,你的问题不是关于匿名函数,而是类似这样的问题
function onTimeout(){
console.log('foo');
};
setTimeout(onTimeout, 1000); // First form
setTimeout(onTimeout(), 1000); // Second Form
不同的是,在第一种形式中,函数onTimeout在1秒后调用,这通常是所需的结果
在第二种形式中,立即调用on Timout,并在1秒后调用该函数返回的任何内容;在这种情况下,将调用undefined,因为console.log返回undefined。因此函数将立即执行,1秒后不会发生任何事情