タグで使用されるasyncとの違いを理論的に知っています。defer<script>
async:スクリプトは、ページの残りの部分と非同期で実行されます (スクリプトは、ページが解析を続行している間に実行されます)。
defer:ページの解析が完了すると、スクリプトが実行されます。
しかし、彼らが従うメカニズムを理解することはできません。
次の 2 つのファイルが1.jsあり1.htmlます。
1.js
alert('Running external JS');
1.html
<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 ファイルが実行alertされ、最初にすべてのステートメントが実行され、最後にスクリプトが実行されます。つまり、 -tagの代わりにin1.jsを使用した場合と同様に動作します。deferasync<script>
私の予想によると、外部スクリプトは HTML 自体のコードよりもはるかに小さいため、使用している HTML ドキュメントのステートメントの間のどこかでトリガーされているはずalertですasyncが、使用の効果と同様に動作しdeferます。
ここで何が起こったのか説明してください。また、間違っている場合は修正してください。