Ich versuche, eine Variable x in einer Funktion P definiert, deren Wert ich in einer anderen Funktion einstellen möchte. Es kommt immer undefiniert.JavaScript-Schließung -Lokale Variable verschachtelte Funktion
Ich habe versucht, meinen Verstand zu verwenden, um Verschluss zu verwenden, aber es geht nur von meinem Kopf. Es gibt mir keine Saite, sondern ein Objekt.
Die Logik ist wie folgt.
function P(i){
var x;
if(i!=null){
//this pulls the data correctly and i could see it in network tab response.
var dataFromQuery=widgets.DATA.create({
url:"abc/cde",
queryTemplate :"/query"+i+ "?"
});
//we query the data and set the value as per the logic.
dataFromQuery.query(function(data){
if(data[0].name){
x=data[0].name; // this stays undefined , and i understand this is a new local variable x.Also the value is here and comes fine here so no issues with the data but i want to set it to the variable defined outside as x.
}
})
}
else{
x="somehardcode";
}
};
habe ich versucht, das Ergebnis dataFromQuery.query (function (Daten) auf eine {var Speicherung und dann zu x Einstellung, aber es kommt wieder als ein Objekt, das ich als String benötigen. Dank
dataFromQuery.query ist wahrscheinlich eine AJAX-asynchrone Anfrage. 'x' wird erst definiert, nachdem die Anfrage gelöst wurde. Wenn Sie versuchen, auf "x" zuzugreifen, bevor es aufgelöst wird, ist es undefiniert. – Hoyen
Eigentlich habe ich versucht, den Wert von x in console.log zu drucken, der den Wert druckt, den ich brauche. aber außerhalb dieses Blockes sagst du unten, sonst möchte ich es dort sehen, es zeigt undefined.So bedeutet das, dass es nicht das asynchrone Problem ist? – NeverGiveUp161
Auch der Umfang von 'x' ist nur innerhalb dieser Funktion sichtbar P. – Hoyen