我理论上知道async
标记中使用的 defer
和 <script>
之间的差异。
async
:脚本与页面的其余部分异步执行(脚本将在页面继续解析时执行。)
defer
:在网页完成解析后执行脚本。
但无法理解他们遵循的机制。
我有以下两个文件 - 1.js
和1.html
。
alert('Running external JS');
<html>
<body>
<script src="1.js" async></script>
<script>
for(var i=0;i<5;i++)
{
alert('HTML code1');
}
</script>
<script>
for(var i=0;i<5;i++)
{
alert('HTML code2');
}
</script>
</body>
</html>
html文件执行s.t.所有alert
语句首先执行,然后最后执行脚本1.js
,即它的行为与defer
代替async
<script>
时的行为类似-tag。
根据我的预期,因为外部脚本比HTML本身中的代码小得多 ,它应该在HTML文档中的alert
语句之间的任何位置触发 ,因为我正在使用async
但行为类似于使用defer
的效果。
请解释这里发生的事情,如果我错了,请纠正我。