【问题标题】:Does setTimeout in JavaScript accept real (floating point) delay times_JavaScript 中的 setTimeout 是否接受真实(浮点)延迟时间_
【发布时间】:2011-11-09 07:31:56
【问题描述】:

我刚才在看JavaScript Timing Events,上面写着“第二个参数表示你想从现在开始执行第一个参数的毫秒数。

现在,我知道在 JavaScript 中,浮点数和整数都是 Number 类型,因此在语法上我可以输入浮点值,例如'setTimeout("javascript statement",4.5);' - 然而,JavaScript 是否会尝试在那里创建 4.5 毫秒的延迟;还是会自动截断为整数并继续?

提前感谢您的任何回答,
干杯!

【问题讨论】:

  • aspektas.com/blog/w3fools-a-foolish-attack-on-w3schoolscom - 在第三方网站上为乏味的花絮争吵是您在这里发布的最没有帮助的事情。
  • 感谢@Neal - 整洁的页面;但是,我的问题更多地与 JavaScript 如何解释 timeout 参数有关,而不是与命令的实际语法相关 - 因此,那里唯一的 setTimeout 评论:“你永远不会将字符串传递给 setTimeout() 除非你喜欢使用 eval()" 与这个问题并不真正相关。不过,这是一个值得了解的好页面;)干杯!
  • 我认为它不是是一个值得了解的好页面。与 w3schools 不同,w3fools 不包含任何类型的实际信息。要知道的页面是developer.mozilla.org/en/window.setTimeout。 w3Fools 是在浪费大家的时间。
  • 也许这是一个更有建设性的建议:尝试使用 MDN(又名 MDC)作为 JavaScript 参考:developer.mozilla.org/en/window.setTimeout
  • 干杯 @Chris 和 Matt Ball(嗯,只能通知一位用户 :))- 很棒的页面......

标签: javascript timing


【解决方案1】:

这几乎肯定是依赖于浏览器的(我还没有检查它不是the language spec 的一部分),但通常这个值存储在一个 32 位带符号的 int 中,所以只接受02^31 - 1 之间的整数值。

相关:

【讨论】:

  • 感谢@Matt Ball - 我猜我的问题略有不同。如果 JavaScript 将超时参数存储为“毫秒”和整数,那么我猜“4.5”毫秒会被截断为 4,而 JavaScript 也会随之而来。但是 - 我不知道这一点,但也许有可能 - 如果 JavaScript 在内部将该参数转换为微秒,在这种情况下,“4500”微,即使作为一个整数,仍然会描述为 4.5 毫秒。你会碰巧知道其中的细节吗?谢谢 - 干杯!
  • 就像我说的:这将取决于浏览器的实现。 尽管如此,我仍然强烈怀疑是否有任何浏览器实际上试图通过转换来处理非整数延迟值将它们转换为更高分辨率的单位,尤其是因为the callback might actually fire laterTL;DR 我认为你想多了/担心太多了。
  • 太棒了,@Matt Ball - 非常感谢,这正是我正在寻找的信息。干杯!
猜你喜欢
  • 2022-12-31
  • 1970-01-01
  • 2016-11-10
  • 1970-01-01
  • 2011-11-05
  • 1970-01-01
  • 2017-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多