個別にロードされた Javascript ソースはすべて、グローバル コンテキストに影響を与える可能性があります。したがって
window.foo = "bar";
1 つのソース ファイルで、別のソース (後で読み込まれる) がチェックできるようになります。
if (window.foo === "bar") {
// do something
}
これが機能しないと、一般的な Javascript フレームワークのようなものを作成できません。
「this」キーワードは関数内でのみ意味があり、その値は関数のソース ファイルとは何の関係もありません (少なくとも、直接的な意味では何もありません)。
編集— ここで興味深いのは、(質問でこの用語を使用するために) ブロック内の他のコードが評価される前に関数宣言を「持ち上げる」Javascript インタープリターの動作だと思います。これも、ブラウザーがそれらをロードするときにスクリプトごとに行われます。したがって、スクリプト ブロック内の関数宣言は、各ブロック内の他のコードの前に解釈されますが、次のタグが読み込まれて評価される前に、1 つの<script>タグが完全に評価されます。<script>
LabJS や Enhanced.js のようなものを使用してスクリプトをロードしている場合、事態はさらに複雑になりますが、サーバーで明示的に結合しない限り、何らかの形でスクリプトを「ブレンド」することに依存できるコンテキストはわかりません。