2

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 個のファイルすべてをダウンロードして解釈する必要がありますか?

4

1 に答える 1

0

いいえ。ブラウザーは一度に 1 つのファイル (というか、スクリプト要素) を処理します。後のスクリプト要素は同じ環境に追加されます (したがって、変数を共有します) が、待たされることはありません。

ロードした最初のファイルが、2 番目のファイルが読み取られるまで定義されていない関数を呼び出した場合、エラーが発生します。(その呼び出しが、2 番目のファイルがロードされるまで呼び出されない関数からのものでない限り)。

于 2013-02-20T10:44:52.870 に答える