<h1>Paragraph 1</h1>
<script type="text/javascript">
alert ("section one bottom");
</script>
我已经在<h1>
标记之后添加了我的脚本,但<h1>
仍然在javascript中的alert()
之后运行。为什么?你能解释一下吗?我是网络开发的初学者。
h1
元素将在alert
发生之前存在,但它可能还没有被渲染(实际上是可见的(。web浏览器上的JavaScript每个窗口有一个主UI线程,(有时多个窗口共享一个线程(。在大多数浏览器中,UI线程通常也用于渲染。alert
和其他1990年代的函数(prompt
、confirm
(的不同寻常之处在于,它们完全停止了窗口的主UI线程,并等待用户执行某些操作。大多数浏览器甚至无法在显示alert
时进行渲染。
通常,避免使用alert
、confirm
和prompt
—原因有几个:上面的问题,他们的UI相当笨重,浏览器正在慢慢改变它们的工作方式(尤其是当选项卡/窗口处于非活动状态时(,这意味着它们不再总是以不同浏览器的方式停止UI世界。
并不意味着JavaScript是单线程的。JavaScript本身对线程的描述相对较少,主要由主机环境决定(尽管最近的规范已经开始改变这一点(。在浏览器上,你可以通过网络工作者拥有多个线程;如今,它们甚至可以共享内存(在大多数浏览器中暂时禁用,但很快就会再次启用(。