2017-09-26 2 views
-5

나는 이미 Surprised that global variable has undefined value in JavaScript을 읽었습니다.JavaScript 전역 바리켓이 정의되지 않았습니다.

하지만 내부 같은 varible 이름을 생성하지 않았기 때문에 내 문제가 다를 수있다 ..

$(document).ready(function() { 
    var all_ap; 
    var url = "http://localhost/example/php-code/json.php"; 
    $.getJSON(url, function(result) { 
     all_ap = result; 
     console.log(result); 
    }); 
    console.log(all_ap); 
}); 

는이 콘솔 결과입니다.

undefined 
(6) [{…}, {…}, {…}, {…}, {…}, {…}] 

위의 결과에 따라 console.log(result); 전에 console.log(all_ap); 작품처럼 보인다.

왜 그럴까요? all_ap varibale 작품을 어떻게 만들어야합니까?

+0

값을 할당하기 전에 * 사용하려고하기 때문에 정의되지 않았습니다. '$ .getJSON'은 비동기입니다. – David

+0

그건 전역 변수가 아닙니다. –

+0

비동기 코드에 대해 읽어야합니다. – sjahan

답변

0

$.getJSON은 비동기 함수이므로 콜백은 나중에 완료되면 호출됩니다. 그렇기 때문에 이 동 기적으로 $.getJSON 다음에 호출되었으므로 먼저 console.log(all_app)이 호출됩니다.

+0

답변 해 주셔서 감사합니다. 위의 코드를 전역 변수에 getJSON 결과로 수정하는 방법을 알려주십시오. 나는 https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-an-asynchronous-call을 읽었다. 그러나 그것을 이해하기가 어렵습니다. 내 발급 사정을 수정하는 방법에 대한 답을 편집 해 주실 수 있습니까? –

관련 문제