javascript - 给 setTimeout 的函数是用什么调用的?

标签 javascript

我有这样的代码:

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/

相关文章:

javascript - 如何在MVC4的UI中使用jQuery创建DataTable?

javascript - 如何在带有 ES6 的 webpack 中的 Angular 之前包含 jQuery?

javascript - 为什么这个正则表达式不起作用?

javascript - 如何删除剑道网格选定行中的边框底部

javascript - 为什么将元素添加到不可见元素中将这些元素设置为在 "style"属性中不可见?

javascript - HTML 密码输入提示

javascript - 在 require.js 中定义全新模块时使用导出是否合适?

javascript - 单击另一个 <a> 时给出 "selected"类,然后如果它是相同的 <a> 则删除该类

javascript - JavaScript 中的提前退出模块化

javascript - Angular <select> 标签多值传递