C'est bien gentil tout ça, mais ça ne permet pas de réaliser la fonction d'addition dont on a parlé quelques chapitres plus tôt, qui additionnait tous les arguments qu'elle avait !
En effet, on avait parlé d'une fonction qui devait pouvoir s'utiliser comme ceci :
Code : JavaScript1
2
3 | addition(12, 5); // nous donnerait 17
addition(21, 4, 15, 11, 6); // nous donnerait 57
// etc. avec autant de nombres qu'on veut
|
Où sont stockés tous ces arguments ?
Ce qui serait pratique, c'est que les arguments soient numérotés... un peu comme... un tableau !
Justement, il est possible de récupérer un tableau qui contient tous les arguments de la fonction. Du coup, le problème semble tout de suite plus simple

.
Un tableau contenant tous les arguments
Partons de la fonction d'addition qu'on veut réaliser. On peut déjà commencer par la créer comme ceci :
Code : JavaScript1
2
3
4 | function addition()
{
// corps de la fonction
};
|
Maintenant, il nous faut récupérer le tableau contenant les arguments.
Ce tableau est
addition.arguments : ce sont
les arguments de la fonction addition, stockés sous forme de tableau.
Petite parenthèse : le point rouge
. ne vous rappelle-t-il pas
monTableau.length, qui est
la longueur de monTableau ?
Le tour est joué !
Eh bien on a gagné !
Non ? Je vous sens sceptiques...
Commençons par créer une variable contenant ce tableau, qu'on va appeler
nb (les arguments sont les
nom
bres à additionner) :
Code : JavaScript1 | var nb = addition.arguments;
|
nb et addition.arguments sont un seul et même tableau !
Si on le modifie, il sera modifié sous les deux noms.
Et maintenant, il ne reste plus qu'à tout additionner (qui dit tableau, dit boucle...), ce qui nous donne cette fonction :
Code : JavaScript1
2
3
4
5
6
7
8 | function addition()
{
var nb = addition.arguments;
var somme = 0;
for(var i=0; i<nb.length; i++)
somme += nb[i];
return somme;
};
|
Il ne nous reste plus qu'à tester (le moment le plus stressant en programmation

) :
Code : JavaScript1
2 | alert( addition(12, 5) );
alert( addition(21, 4, 15, 11, 6) );
|
Qui nous affiche bel et bien 17, puis 57

.
Notez qu'on peut très bien appeler
addition(), sans aucun paramètre : le résultat est 0.
Un autre exemple
Pour que ce soit bien clair pour vous, étudions un nouvel exemple : une fonction, prenant encore une fois autant de paramètres (des nombres) qu'on veut, et qui renvoie le plus grand de ces nombres.
Cette fois-ci, à la différence de l'addition, on ne sait pas trop quoi renvoyer s'il n'y a aucun paramètre...
On va donc créer une fonction comme ceci :
Code : JavaScript
Dans le tableau d'arguments, la valeur de m sera également prise en compte, dans la première case (la case numéro 0).
On va ensuite parcourir le tableau, et enregistrer la plus grande valeur "lue" dans une variable (on peut utiliser la variable
m) : cette variable contiendra donc le plus grand nombre parmi ceux qu'on a déjà parcourus.
Code : JavaScript1
2
3
4
5
6
7
8 | function maxi(m)
{
var nb = maxi.arguments; // on a donc m = nb[0]
for(var i=1; i<nb.length; i++)
if(nb[i] > m) // si l'argument est plus grand que le maximum...
m = nb[i]; // ... alors c'est le maximum
return m;
}
|
Et, encore une fois, on peut tester :
Code : JavaScript1
2
3
4
5 | var n = maxi(7, 3);
alert(n);
var p = maxi(2, 8, 4, 1, 9, 4);
alert(p);
|
Remarquez au passage que cette dernière fonction peut s'avérer utile

.