<p><span id="span1">Hello World!</span></p> <script type="text/javascript"> document.getElementById('span1').style.background = 'red'; alert(1); alert(2); alert(3); </script>
先弹出1,弹2,弹3,之后span才改变背景色。why?
alert会阻塞所有线程,而且alert会被优先执行。
alert会阻塞所有线程,其中就包括GUI渲染线程(所以颜色不变)和主线程(所以setTimeout里面的任务只是在1秒后被添加到了任务队列里面,但是没有执行,需要你关闭了alert之后才会执行,但是你关闭第一个alert之后,马上又有同步任务了,所以那个第一个异步任务一直执行不了,必须等到所有同步任务执行完之后第一个异步任务才能执行, 后面两个异步任务同理)