返回顶部

对于javaScript中的alert和document.write()的执行顺序的记录

代码:

<script>
//1----语句式的匿名函数创建以及调用 (function(name,age){ alert("name:"+name+",age:"+age); document.write("name:"+name+",age:"+age+"
<br/>"); alert("111"); alert("222"); })("lisi","44"); //------------------------------------------- //3---第三种函数的创建 var f2=new Function("name","age",'alert("name:"+name+",age:"+age);'); f2("zhaijiahao","22");
</script>

浏览器测试现象:访问test.html文件之后的现象

 

 点击完确定之后紧接着

 

  点击完确定之后紧接着

 

   点击完确定之后紧接着,特别注意页面中的并没有出现name:lisi,age:44这句话

 

 最后所有的调用的函数中的alert()运行完之后,就会显示name:lisi,age:44这句话

 

 

具体的原因分析:

关于document.write()和alert()执行顺序的问题

为什么先写document.write()输出,却要等到后边的alert执行完成后才显示document.write()的内容?

解答:

有人认为:alert弹窗会阻塞代码 要点击确认才执行下面的代码,

 

问题复述:问题是把alert()写到document.write()之后也是先出弹窗,这是什么原因呢?

更合理的解答:alert会阻塞线程。实际上.write已经执行,只是浏览器还没渲染,这种情况下,有办法先让write执行结果显示。方式:

想实现“先document.write,再alert”。这里提供下思路:1>主线程跑document.write() ,然后利用setTimeOut() 定时0。5秒后执行alert();这个方法是线程不可控的 2>利用promise强制执行document.write()完之后,再在then 方法内执行 alert

 

posted @ 2019-09-16 16:04  fen斗  阅读(1344)  评论(0编辑  收藏  举报