2017-09-26 3 views
-5

Ich habe bereits Surprised that global variable has undefined value in JavaScript gelesen.JavaScript Global Varibale ist undefined

Aber mein Problem ist, unterscheiden sich, weil ich nicht denselben varible Namen innen erstellt haben ..

$(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); 
}); 

Dies sind die Konsole Ergebnisse.

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

Scheint, wie console.log(all_ap); Werke vor console.log(result); nach den Ergebnissen von oben.

Warum ist das? Wie soll ich machen all_ap varibale funktioniert?

+0

Es ist undefiniert, weil Sie versuchen, es zu verwenden, * bevor * ihm ein beliebiger Wert zugewiesen wurde. '$ .getJSON' ist asynchron. – David

+0

Das ist keine globale Variable. –

+0

Sie müssen über asynchronen Code lesen. – sjahan

Antwort

0

Da $.getJSON eine asynchrone Funktion ist, wird der Callback, der ihm zur Verfügung gestellt wird, aufgerufen, nachdem er in der Zukunft beendet wurde. Deshalb wird Ihre console.log(all_app) zuerst angerufen, weil sie synchron nach $.getJSON aufgerufen wird.

+0

Danke für die Antwort. Kannst du mir bitte sagen, wie ich obigen Code modifiziere, um getJSON zu einer globalen Variable zu bringen? Ich lese https://stackoverflow.com/questions/14220321/how-do-i-return-the-response-from-a-asynchronous-call. Aber es ist schwer zu verstehen. Können Sie bitte Ihre Antwort bearbeiten, wie ich meine Ausgabe korrigiere? –