2016-04-19 7 views
0

私のWebページは、JQuery命令$.getScript(...)を介して動的にロードする複数のjavascriptファイルで構成されています。しかし、私は理解できない行動に気付いた。例えばgetScript使用時のJavaScript varaiblesの可視性

仮定myScript1.jsは次のようになります。

var a; 
var b; 

function ab() { 
    a=1; 
    b=2; 
} 

私は今anotherScript.js内で以下ならば、私は次のログを取得します:

$.getScript("scripts/myScript1.js", function() { 
    ab(); 
    console.log(a); //prints 1 
    console.log(b); //prints 2 
}) 

私はドン奇妙なこと」次のことが分かります: oneMoreScript.jsの中で次のようにすれば、私は同じ出力を得るでしょう:

$.getScript("scripts/myScript1.js", function() { 
    console.log(a); //prints 1 
    console.log(b); //prints 2 
}); 

なぜ最後のコード例の変数はまだ宣言されていますか?getScript命令はすべて実際にはajax命令であり、chacheがアクティブ化されていない場合(デフォルトはなし)、getScript命令が実行されるたびに、目的のスクリプトがサーバーから再度ロードされて実行されます。このコードで

+0

スクリプトはグローバルスコープにロードされます –

+0

$ .getScriptは単にあなたのページに '