JavaScript は Ruby と同じように、最初の行が解釈されて実行され、最後の行は最後まで解釈されない、と考えがちです。
ただし、JavaScript は次のようなホイスト ルールの対象となるため、次のようになります。
console.log(foo); // foo already has a value
function foo() {
return 123;
}
console.log
が HTML からリンクされた JavaScript ファイルの最初の行で、ファイルが 200kb で、HTML ファイルが他の 10 個の JavaScript ファイルをリンクfoo
し、最後のファイルの最後の行で が定義されているとしたら、巻き上げルールはfoo
、最初の行でも定義する必要があるため、最初の行が実行される前に、11 個のファイルすべてをダウンロードして解釈する必要がありますか?