为什么IE和FF的输出不同?
在IE中,它的展示:Hello,在FF中它的显示:Hi
var message = "Hi";
setTimeout(function(){alert(message);},10);
setTimeout(function(){message = "Hello";},0);什么是标准化?哪个浏览器做得对?
注意:如果我在FF中将10转换为11,那么它将显示Hello
发布于 2010-07-28 06:30:51
Firefox处理小延迟的方式与IE不同。Firefox的延迟时间为10‘t(也不准确)。有关更多信息,请参见https://developer.mozilla.org/en/window.setTimeout的注释。
发布于 2010-07-28 06:31:03
在我的个人电脑上,我在FF和IE中运行了它,结果正好相反。
原因是您的超时时间仅为10毫秒。Windows上定时器的分辨率实际上是10毫秒左右,因此有可能先出现任何一个超时。要确定一件事发生在另一件事情发生之前,你绝对应该在超时之间有一个更大的差距。
即使这样,你也不应该期望它总是起作用:-)
如果您真的想要按相同的顺序执行,请将其保持在相同的代码行中,或者设置标志,说明某个特定操作是否已经完成,并在执行第二个依赖于第一个操作的操作之前检查该操作。
发布于 2010-07-28 06:31:07
在浏览器中不能保证计时器事件的执行顺序。它们在内部由操作系统的本机计时器实现处理,并可能以不同的顺序触发。
由于您已经指定了这么短的时间,很可能是这样的。
https://stackoverflow.com/questions/3350373
复制相似问题