window.onload和setTimeout的执行顺序问题.

    var key
    window.onload=function () {
        key=1
        console.log('load'+1111)
    }
    setTimeout(function(){
        console.log('setTimeout'+key)
    },0)

这段代码在mac的chrome中输出的结果是图片描述

在window的chrome中输出的结果是
图片描述

输出的结果不一样是什么原因导致的??

阅读 4.3k
4 个回答

应该跟网页加载速度和浏览器对setTimeout间隔时间为0不同的处理方法有关

你这样写太不稳定了

//这只是一个声明的事件绑定而已 
window.onload=function () {
//这是一段立即执行的JS
setTimeout(function(){

JS承上启下的执行顺序,onload事件不一定执行,就执行setTimeout也很正常啊;

看浏览器内核反应速度!?不确定性因素太多了!

写一个同步方法就可以了。
就是先让哪个执行,再让哪个执行。

setTimeout 的毫秒数设置为 0 也不会立即执行,浏览器会有最小延迟,大概 5s 10s 这样。如果页面加载的延迟比这个延迟大就会先执行 setTimeout

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题