Function récupérée les parametres

Résolu
balvick Messages postés 36 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 31 mars 2009 - 11 déc. 2007 à 21:15
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 - 13 déc. 2007 à 18:24
Bonjour,

je cherche a trouver comment récupére pour traité les valeurs d'une fonction
Exemple :

function test(a,b,c,d....)
{
   for (i=0;i== maxvaleur????; i++) {
   i+=10;
   }

}
test(1,2,20,30);

donc je voudrai que les paramettre de "a" a "d" defile et on ajoute 10.
evidament je ne souhaite pas trier comme ceci = a+=10;b+=10;...

j'espere que j'ai ete clair que qu'une personne peu m'aider :)

4 réponses

cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
12 déc. 2007 à 09:20
Hello,

si au départ tu ne connais pas le nombre exacte de parametres qui seront transmis à la fonction, il va falloir ruser...
et utiliser l'objet arguments (qui contient un tableau avec les valeurs de tous les parametres transmis à la fonction)

function test()
{
   for (var i:Number=0;i<arguments.length; i++) {
     var param:Number=arguments[i]
     arguments[i]+=10;
     trace("Parametre "+i+":  valeur transmise="  + param + " nouvelle valeur ="+arguments[i])
   }

}
test(1,2,20,30);
test(100);
test(1,2,3,4,5,6,7,8,9);

@+
3
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
13 déc. 2007 à 18:24
pourquoi "a" n'est pas egal a arguments[0] ?


-> Dans mon exemple, comme on ne sais pas le nombre d'arguments qui vont être passé à la fonction, on ne les defini PAS



function test() { ...




arguments regroupe dans un tableau les VALEURS transmises à la fonction mais evidemment pas leurs noms.
voila pourquoi "a" n'est pas egal à arguments[0] ?


Dans ton exemple, pourquoi "a" n'est pas egal a arguments[0] ?


tu as transmis a=undefined ensuite tu modifies argument[0]=0 en lieu et place de undefined (valeur initiale arguments[0])
Seulement a et arguments[0] sont deux variables différentes.
Pour que a soit égale à 0 si undefined est transmis tu dois faire après argument[0]=0
a=argument[0], b=argument[1],...





if (arguments[i]==undefined) {arguments[i]=0;}


arguments[i] ne sera jamais undefined puisque arguments regroupe les valeurs transmises,
sauf si c'est effectivement la valeur undefined qui est passée à la fonction comme dans test(undefined,1,"test");



-je voir que tu precise var param:Number je voudrais savoir si ca optimise le execution du script ou pas ?


Non, dans mon exemple c'était uniquement pour pouvoir regrouper dans la fonction trace() la valeur transmise et la valeur incrémentée.

@+
3
balvick Messages postés 36 Date d'inscription vendredi 11 avril 2003 Statut Membre Dernière intervention 31 mars 2009
12 déc. 2007 à 13:48
merci c'est exactement se que je voulais.

merci beaucoup
0
cs_Girou Messages postés 1203 Date d'inscription lundi 10 mars 2003 Statut Membre Dernière intervention 23 juillet 2009 2
13 déc. 2007 à 18:22
N'ayant pas spécialement pour habitude de répondre au questions privées (autant en faire profiter tous le monde) je reprend ici la 'suite' de la discussion :

Bonjour,
je te remercie de ta reponse sur le forum.
mes j'aurai encore une petite question :

-pourquoi "a" n'est pas egal a arguments[0] ?
car j'aimerai remplacé a par 0 si il n'est pas defini.

-je voir que tu precise var param:Number je voudrais savoir si ca optimise le execution du script ou pas ?
(je met souvent param=)

function test(a,b,c,d)
{
   for (var i:Number=0;i
0
Rejoignez-nous