Bonjour,
Est-il possible d'ecrire des fonctions d'arite variable sans avoir a faire de la surchage de fonctions (explosion combinatoire).
d'avance merci.
PS: et si oui comment et si non y a t-il un moyen simple de faire ?
Bonjour,
Est-il possible d'ecrire des fonctions d'arite variable sans avoir a faire de la surchage de fonctions (explosion combinatoire).
d'avance merci.
PS: et si oui comment et si non y a t-il un moyen simple de faire ?
Serais-ce de ça dont tu aurais besoin ?
https://developer.mozilla.org/fr/Guide_JavaScript_1.5/Utilisation_de_l'objet_arguments
Tu peux passer par l'objet arguments qui contient la liste des arguments passés à ta fonction.
Effectivement comme le dit Difré91 tu as l'objet "arguments" qui peut servir si t'as un nombre d'argument inconnu.
Par contre, si ton cas comporte un nombre d'arguments possibles fixe, mais pas tous utilisés et formant pas mal de combinaison possibles, rien ne t'empêche de définir les arguments et de tester leurs existences. (Les arguments dépendant de leurs place lors du passage de paramètre, pour fournir un argument X, il faut que tous les précédent soient fourni, il est donc conseiller de placer les plus important à gauche lors de la déclaration de la fonction et les optionnels à droite).
Ainsi :
peut être appelée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 function test(a,b,c,d){ }
ou pour passer le "b" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part test("a");
par exemple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part test(null, "b"); // une information doit donc obligatoirement être fournie en place du "a" pour fournir un "b", le null est considéré comme une information et peut être remplacé par undefined , "" ou encore false par exemple, selon les testes d'existence que tu auras défini dans ta fonction test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 function test(a,b,c,d){ if(a){ // attention aux cas où le type renvoit "faux" selon sa valeur, par exemple, si tu veux afficher un entier de valeur "0" tu devras rajouter une condition. alert(a); } if(b){ alert(a); } }
Une autre méthode assez répandue consiste à utiliser un objet conteneur pour les paramètres, qu'ils soient optionnels ou pas. Exemple :
en appelant la fonction de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 function test(params){ params = params ? params: {};// pour éviter des erreurs en accédant aux propriétés quand l'objet n'est pas fourni // bla bla bla du code ici // ... // exemple d'utilisation d'un des params : if (params.etatActif && params.ageDuCapitaine == 42) { // ... } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 var obj = { etatActif: true, nomApplication: "WonderSoft", ageDuCapitaine: 42, comparerCandidats: function() { /* du code ici */ } }; test(obj);
ou encore
Code : Sélectionner tout - Visualiser dans une fenêtre à part params = params || {};
Les joies du CSS | Réponses sur forum | Simple comme JS | Essais libres autour de l'API G$$gle Maps
✂ ---------------------------------------------
developpez.net c'est aussi :
✔ Les meilleurs cours et tutoriels pour apprendre le CSS
✔ Les meilleurs cours et tutoriels pour apprendre le (X)HTML
✔ Les meilleurs cours et tutoriels pour apprendre le JavaScript
et même : params || params = {}; !
pas même le temps perdu d'une assignation "tautologique" en cas de param présent ^^
Partager