我有这样的代码:
setTimeout(foo, 600);
我一直认为 foo
没有接受任何参数,例如:
function foo() { /* bars */ }
但是,执行以下操作:
function foo(a) { alert(a); /* bars */ }
弹出显示-7 的警报。这个数字代表什么?
最佳答案
它是计划运行时间和实际运行时间之间的时间差(以毫秒为单位)。
alert(setTimeout(function(a) { alert(a) }, 2000));
如果您及时清除第一个警报,您会看到下一个警报在 -10 到 10 的某处。如果您等待几秒钟,您会看到大约是您等待的时间减去 2000。
对于 setInterval 也可以看到同样的事情。在 Firebug 中运行以下命令:
setInterval(function(a) { alert(a); }, 2000);
尝试快速关闭警报,它将再次接近 0。保持开放状态 - 它会给您带来巨大的值(value)。
注意 这是在 Firefox Mac 上,保持警报打开将停止处理 Javascript,因此计时器在我关闭警报之前不会执行。上述测试的行为在其他浏览器中可能有所不同
关于javascript - 给 setTimeout 的函数是用什么调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2293096/