2011-01-23 4 views
1

빠른 질문 :신참 질문 다음 예제에서 JQuery와 범위에 대한

$(function(){ 
    var test; 
    $.get('txtfile.txt', function(txtfile) { 
     test = txtfile.split('\n'); 
    }); 
    console.log(test); 
}); 

콘솔 반환 '테스트'는 정의되지 않습니다. 제발 내가 실수를 저에게 가르쳐주세요. 감사합니다. .

+0

jQuery에는 자체 범위에 대한 개념이 없습니다. 단지 자바 스크립트 라이브러리 일뿐입니다. –

+0

:) 잘 jquery에서 범위를 직접 wasnt하지만 jquery 구조에서 잃어버린 메신저 사실 ... – uhandoh

답변

3

$.get은 비동기 적으로 작동합니다 ("Ajax"의 "A"는 "비동기"를 나타냄). 성공 콜백 (function(){} 구조체를 사용하여 정의)은 Ajax 호출이 완료된 후에 만 ​​호출됩니다. 코드가 도착하면

console.log(test); 

아직 도착하지 않았습니다.

console.log 호출을 성공 콜백에 넣으면 예상대로 작동합니다.

+0

그래서 $ .get에 의해 액세스 된 데이터와 관련된 모든 성공 콜백의 내부에 있어야합니까? – uhandoh

+1

@uhandoh : 예, 성공 콜백은 모든 작업을 수행해야합니다. 그러나 성공 콜백은 필요한 함수 나 메서드를 자유롭게 호출 할 수 있습니다. 성공 콜백은 다른 클로저와 마찬가지로 서라운드 스코프의 항목에 액세스 할 수 있습니다. –