クイック質問:初心者の質問次の例ではjQueryの範囲に関する
$(function(){
var test;
$.get('txtfile.txt', function(txtfile) {
test = txtfile.split('\n');
});
console.log(test);
});
コンソールに戻り「テスト」は未定義です。私が間違っているところを教えてください。おかげさまで
クイック質問:初心者の質問次の例ではjQueryの範囲に関する
$(function(){
var test;
$.get('txtfile.txt', function(txtfile) {
test = txtfile.split('\n');
});
console.log(test);
});
コンソールに戻り「テスト」は未定義です。私が間違っているところを教えてください。おかげさまで
$.get
は、非同期で動作します(「Ajax」の「A」は「非同期」を表します)。成功コールバック(function(){}
構造体を使用して定義している)は、Ajax呼び出しの終了後にのみコールされます。コードが
console.log(test);
まだ起こっていない。
console.log
コールを成功コールバックに入れると、正常に動作します。
$ .getによってアクセスされるデータと関係しているすべてが成功のコールバックの中になければなりませんか? – uhandoh
@uhandoh:はい、成功のコールバックはすべての作業を行う必要があります。しかし成功のコールバックは、必要な関数やメソッドを自由に呼び出すことができます。成功コールバックは、他のクロージャと同じようにサラウンドスコープ内のものにもアクセスできます。 –
jQueryには独自のスコープがありません.Javascriptライブラリです。 –
:)それはjqueryの直接スコープではなく、むしろjquery構造体で失われてしまったという事実... – uhandoh