<h1>Paragraph 1</h1>
<script type="text/javascript">
alert ("section one bottom");
</script>
我在<h1>
标记之后添加了脚本,但是<h1>
在JavaScript中的alert()
之后仍在运行。为什么?你能解释一下吗?我是Web开发的初学者。
答案 0 :(得分:7)
h1
元素将在alert
发生之前存在,但可能尚未渲染(实际上在视觉上,在视觉上,在视觉上)。 Web浏览器上的JavaScript每个窗口都有一个主UI线程¹(有时一个窗口以上共享一个线程)。在大多数浏览器中,该UI线程通常也用于呈现。 alert
和其他1990年代功能(prompt
,confirm
)与众不同之处在于,它们完全停止了窗口的主UI线程,并等待用户执行某些操作。显示alert
时,大多数浏览器甚至无法渲染。
通常,请避免使用alert
,confirm
和prompt
,原因如下:上面的问题,其UI相当笨拙的事实以及浏览器运行缓慢的事实更改它们的工作方式(尤其是在选项卡/窗口处于非活动状态时)意味着它们不要始终停止UI界面,并且会因浏览器而异。
¹不是并不意味着JavaScript是单线程的。 JavaScript本身几乎没有关于线程的论述,而是将其主要留给宿主环境(尽管最近的规范已开始对此进行更改)。在浏览器上,您可以通过web workers拥有多个线程;这些天来,它们甚至可以share memory(在大多数浏览器中暂时被禁用,但很快将能够再次使用。)