web workers
独自の獣である以外では、HTML Web ページと関連する Javascript をシングル スレッドと見なします。[1]
したがって、JavaScript がページで実行されている場合、ユーザー インターフェイス全体がブロックされます。のようなものwindow.alert()
で、クリアされるまで UI 全体window.confirm()
をwindow.prompt()
ブロックしますが、無限ループでさえ、終了するまでブラウザー ウィンドウをフリーズさせます[2]。
編集 - コメントに基づいて、質問を編集します。
元の質問で提供されたリンクは、実行中の Javascriptの実行を参照していませんが、 Javscriptの読み込みの同期と非同期の性質について言及しています。このようなブロッキングが発生する理由の一例を紹介します。
JavaScriptの黎明期には、関数document.write()
は Javascript が Web ページと対話する唯一の方法でした。document.write
そのため、Web ページが Javascript ファイルの読み込み要求に遭遇したとき、ブラウザは、Javascript ファイルがストリームに何かを挿入するために使用された場合に備えて、他のすべてを保留にする必要がありました。
今日の世界では、これはあまり起こらないため、ブラウザーはページ デザイナーに、「この Javascript ファイルは、いつ読み込まれるか正確には気にしないことを約束しますdocument.write()
。また、他のトリッキーなことは使用しません。完了するまで凍結する必要はありません。
これが、最新の Web ブラウザーにdefer
およびasync
属性がある理由です。
- Opera は特別ですが、無視します。
- またはブラウザ全体