Accéder à une variable à l'intérieur d'une fonction qui est à l'intérieur d'une fonction en javascript?
Comment puis-je accéder à une variable à l'intérieur d'une fonction qui est à l'intérieur d'une fonction en javascript ?
var a;
var surveyObjects = Parse.Object.extend(surveyObject);
var query= new Parse.Query(surveyObjects);
query.count({
success: function(count){a = count;},
error: function(error){}
});
alert("count of function "+a);
a
montre undefined
valeur. J'ai besoin d'utiliser la valeur de a
à l'extérieur.
- Vous ne pouvez pas, sauf si vous modifiez le code.
- Que le code que vous avez est absurde.
- la déclaration de la variable à l'extérieur de la portée et de portée mondiale
Vous devez vous connecter pour publier un commentaire.
Vous pouvez le faire en utilisant implicite variable globale comportement.
JS:
Si vous n'avez pas déclarer une variable en javascript I. E pas à l'aide de la
var
mot-clé, il devient une variable globale.pour davantage de lecture:
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Statements/var#Implicit_globals_and_outer_function_scope
var a
sur la ligne 10 dans votre application, vous serez capable de l'utiliser sur la ligne 4 sans seReferenceError
. Cependant, de levage n'est pas une variable déplacer étendues.Raison de la façon dont javascript, et la plupart des langues, la portée des variables, vous ne pouvez pas accéder aux variables déclarées à l'intérieur d'une fonction à partir de l'extérieur d'une fonction. La variable appartient à la fonction de l'étendue uniquement, pas la portée globale.
Heureusement, les fonctions hériter de la portée de leurs appelant. Donc, la meilleure façon de faire votre variable accessible de l'extérieur de la fonction est d'abord de déclarer à l'extérieur de la fonction, puis de les utiliser à l'intérieur de la fonction.
Notez que vous devez être très prudent sur la façon dont vous la portée de vos variables. Le point de l'ensemble des fonctions est d'encapsuler et de l'isoler de la fonctionnalité.
Dans le cas de promesses, vous pouvez déclarer une variable en dehors de la promesse et définissez sa valeur sur le succès.
EDIT: Basé sur ce que vous avez montré dans les commentaires, vous avez async questions. Les promesses sont asynchrones, ce qui signifie qu'ils ne courent pas dans l'ordre dans votre code. C'est pourquoi la
success
eterror
rappels exister, d'être appelé une fois la promesse résout. Votrealert(a)
est en dehors de la promesse de rappel, de sorte qu'il s'exécute immédiatement, sans attendre l'analyse de la promesse de résoudre de manièrea
est toujours pas défini. Si vous mettez laalert(a)
à l'intérieur de la promesse de rappel,a
aura été mis en place par ce point.Grâce.
J'ai déclaré la variable comme globale et la valeur insérée à l'intérieur de l'intérieur de la fonction et ensuite fait un appel de fonction à l'intérieur de la fonction pour déclencher une fonction d'appel de la valeur.
comme ça:
utiliser l'instruction return pour accéder à des variables à l'échelle mondiale.