J'écris du code Javascript et j'ai besoin de garder une trace d'un état global. L'état n'est jamais modifié que par une seule fonction, mais il doit être largement accessible depuis d'autres fonctions.Y at-il quelque chose de mal à attacher une variable à une fonction en Javascript?
que je fais actuellement de cette manière:
function foo(bar) {
var self = arguments.callee;
if (!self.state) {
self.state = 0; // called 0 times
} else {
self.state++; // increase the number of times i've been called
}
}
Est-il judicieux de lier la variable globale de l'Etat à la fonction comme celui-ci? C'est génial mais je crains qu'il y ait quelque chose de dangereux que j'ai manqué.
L'OP dit que la variable d'état doit être accessible à partir d'autres fonctions. Vous pourriez ajouter un "getter" accessible via la fonction interne, mais ce serait désordonné. –
J'ai supposé que la valeur de retour de foo (bar) serait, ou incorporerait, l'état. Notez que ni l'OP ni mon exemple montrent que foo (bar) renvoie une valeur mais vous pouvez l'imaginer. – thomasrutter
Donc, vous auriez besoin d'invoquer la fonction juste pour lire l'état? Que faire si la fonction inclut d'autres effets secondaires (tels que l'incrémentation du compteur d'appels, juste pour les démarreurs)? –