J'ai lu un peu partout que les variables globales sont mauvaises et des alternatives devraient être utilisées. En Javascript plus précisément, quelle solution dois-je choisir.
Je pense à une fonction qui, lorsqu'elle reçoit deux arguments ( function globalVariables(Variable,Value)
) vérifie si Variable existe dans un tableau local et si c'est le cas, met sa valeur à Value
sinon, Variable
y Value
sont annexés. Si la fonction est appelée sans arguments ( function globalVariables()
), il renvoie le tableau. Peut-être que si la fonction est lancée avec un seul argument ( function globalVariables(Variable)
), il renvoie la valeur de Variable
dans le tableau.
Qu'en pensez-vous ? J'aimerais connaître vos solutions alternatives et vos arguments pour l'utilisation des variables globales.
Comment utiliseriez-vous globalVariables();
function append(){
globalVariables("variable1","value1"); //globalVariables() would append variable1 to it's local array.
};
function retrieve(){
var localVariable1 = globalVariables("variable1"); //globalVariables() would return "value1".
};
function retrieveAll(){
var localVariable1 = globalVariables(); //globalVariables() would return the globalVariable()'s entire, local [persistently stored between calls] array.
};
function set(){
globalVariables("variable1","value2"); //globalVariables() would set variable1 to "value2".
};
Est-ce que c'est un Modèle singleton BTW ?
Dans ce scénario spécifique, une fonction peut définir une variable à un moment donné, et bien plus tard, une autre fonction, peut-être lorsqu'un utilisateur soumet un formulaire, aura besoin de récupérer cette variable. Par conséquent, la première fonction ne pourrait pas passer la variable comme argument à la fonction suivante, car elle ne serait jamais appelée par la première.
Merci, j'apprécie toute votre aide !
11 votes
Je ne pense pas que vous compreniez bien pourquoi ils sont mauvais.
1 votes
@Yacoby : Je pense que oui [la réponse de Lee explique beaucoup de choses] mais si vous pensez le contraire, merci de développer. Quelle solution dois-je utiliser dans ce scénario ?
0 votes
Je suis d'accord avec @Yacoby. Vous réinventez en quelque sorte les variables globales dans votre exemple, ce qui vous ramène à la première étape de "les variables globales sont mauvaises".
4 votes
OK, merci Yacoby et Patrick, mais comment avoir une variable persistante entre plusieurs fonctions qui ne s'appellent pas les unes les autres, donc les arguments ne peuvent pas être envoyés ?
1 votes
Devrais-je, par exemple, conserver la valeur des variables dans un cookie comme alternative ?
0 votes
@Jay Selon les valeurs que vous souhaitez conserver de manière persistante, vous pourriez utiliser des variables statiques ("globales par classe") ou les passer en argument aux fonctions qui en ont besoin comme l'écrit @Yacoby dans sa réponse ci-dessous. Tout dépend du modèle que vous essayez de développer.
0 votes
Quel problème essayez-vous de résoudre avec votre solution, et comment le résout-elle ?