garder la variable active dans une fonction javascript
Je veux à la maison une variable dans une fonction
Cette variable va changer d'état en fonction de l'interaction de l'utilisateur
function plan_state(current){
if (current != ''){
state = current;
}
else {
return state;
}
}
lorsque le doc charges j'appelle plan_state ("moi");
quand certaines choses se passent, je peut appeler plan_state('aimer')
le problème, je lance une fonction et que vous souhaitez vérifier l'état actuel..
alert(plan_state());
- je obtenir de l'indéfini en arrière et à tout le moins devrait être " moi " que j'ai mis cette onload.
ce que je fais mal?
source d'informationauteur Daniel Hunter
Vous devez vous connecter pour publier un commentaire.
La fonction n'est pas dynamique, car la variable d'état est déclaré à l'intérieur de la fonction et, par conséquent, n'existe que pour la durée de vie de l'appel de la fonction. Une solution simple serait de déclarer la variable à l'échelle mondiale, en dehors de la fonction. C'est mauvais mauvais mauvais mauvais.
Une meilleure approche est d'utiliser la motif de module. C'est un modèle essentiel pour savoir si vous êtes sérieux à propos de javascript développement. Il permet à l'état par le biais de l'interne (variables privées) et expose un certain nombre de méthodes ou de fonctions pour la modification ou de l'obtention de l'état (comme la programmation orientée objet)
donc
stateModule.changeState("newstate");
définit l'étatet
var theState = stateModule.getState();
obtient l'étatJe crois que la portée de la variable est trop "faible"; par la définition de la variable dans la fonction, soit en tant que paramètre ou explicitement comme un
var
il est uniquement accessible au sein de la fonction. Afin de réaliser ce que vous êtes après, vous pouvez soit mettre en œuvre la variable en dehors de la portée de la fonction, à un niveau plus global evel (pas recommandées vraiment).Cependant, après re-lecture de votre question, il est légèrement manquer de pointe. Auriez-vous pas envie de retourner
state
quel que soit lecurrent
? Je pense que vous pourriez être après quelque chose comme ça:Alternative la structure de l'objet: