Revenons à notre fonction de conversion : nous allons lui faire subir quelques modifications.
L'idée est, avec une unique fonction, de pouvoir convertir tout type d'unités.
Par exemple, on peut faire un bouton qui, lorsqu'on cliquerait dessus, convertirait des mètres en centimètres, et une image convertissant les Euros en Francs.
En y réfléchissant, le code à exécuter serait presque le même, il n'y a que le taux de conversion et le nom des unités qui changent...
Il nous suffirait, au moment de l'appel de la fonction, de dire : "le taux de change est de 6.55957, et les unités sont les Euros et les Francs".
Eh bien c'est possible grâce aux
arguments !
Pour vous en expliquer le principe, je vais prendre l'exemple d'une balise (x)HTML :
Code : HTML1 | <img src="EuroFrancs.png" alt="" />
|
Ce code insère une image.
L'image qui est affichée est celle dont on a indiqué le nom : on utilise la même balise (c'est <img />) quelle que soit l'image, mais en précisant quelle image on veut afficher.
Eh bien c'est exactement le même principe : on va indiquer à notre fonction le taux de conversion à utiliser...
Créer une fonction qui possède des arguments
On va reprendre notre fonction de conversion, en y apportant quelques modifications : commençons par enlever les unités (on les ajoutera plus tard), et ajouter un argument : le taux de change.
On pourra ainsi, à partir de cette même fonction, convertir tout ce qu'on veut.
Si on veut convertir des euros en francs, on n'aura qu'à écrire
conversion(6.55957).
Pour convertir des mètres en centimètres, ça sera
conversion(100) (1 m = 100 cm).
Et on peut même faire un convertisseur belge, avec conversion(1), qui convertit des francs belges (BEF) en francs belges (1 BEF = 1 BEF) !
(désolé pour les belges...).
Il nous suffit de préciser le taux entre les parenthèses. Pratique, pas vrai ?
Allons-y :
tout d'abord, lors de la déclaration de la fonction, il nous faut préciser entre les parenthèses le nom de l'argument : appelons-le
taux.
Lorsqu'on appellera la fonction
conversion(6.55957), cela aura pour effet de créer une variable
taux avant d'exécuter la fonction, et cette variable aura pour valeur
6.55957. Elle sera détruite une fois la fonction exécutée.
Voici le code modifié et commenté :
Code : JavaScript1
2
3
4
5
6 | function conversion(taux) // declaration de la fonction avec un argument
{
var valeur = prompt("Entrez la valeur à convertir");
var resultat = valeur * taux; // on calcule le resultat, en utilisant l'argument
alert('Valeur : '+valeur + '\nRésultat : '+resultat);
}
|
Il ne faut donc pas oublier de préciser ce taux lorsqu'on appellera la fonction :
Code : HTML1 | <p> <img src="EuroFrancs.png" alt="" onclick="conversion(6.55957)" /> </p>
|
Et si on veut convertir des mètres en centimètres, pas besoin d'une autre fonction, il suffit de faire comme ceci :
Code : HTML1 | <p> <a href="#" onclick="conversion(100)">Conversion mètres > centimètres</a> </p>
|
Fonction à plusieurs arguments
Il serait tout de même plus agréable de voir s'afficher le nom des unités...
Eh bien il suffit pour cela de créer deux arguments supplémentaires !
Rien de bien compliqué, il faut juste les séparer par des
virgules. Vous pouvez les créer dans l'ordre que vous voulez (essayez cependant d'utiliser un ordre "logique").
Ensuite, lorsque vous appellerez votre fonction, il faudra donner les paramètres dans le même ordre (si le taux de conversion est le premier, on l'indiquera en premier - logique

).
Choisissons cet ordre :
unité 1,
taux et
unité 2.
Après quelques modifications apportées à notre fonction, on obtient ceci :
Code : JavaScript1
2
3
4
5
6 | function conversion(unite1, taux, unite2)
{
var valeur = prompt("Entrez la valeur à convertir, en " + unite1);
var resultat = valeur * taux;
alert(valeur + ' ' + unite1 + '\n' + resultat + ' ' + unite2);
}
|
Et on l'appelle ensuite de cette manière :
Code : HTML1
2
3
4 | <p>
<img src="EuroFrancs.png" alt="" onclick="conversion('Euros', 6.55957, 'Frs')" /> <br />
<a href="#" onclick="conversion('m',100, 'cm')">Conversion mètres > centimètres</a>
</p>
|
Je vous laisse tester...
Ça commence à avoir de la gueule, pas vrai ?
Arguments facultatifs
Il est possible de créer des arguments
facultatifs : on peut choisir de ne pas les préciser lors de l'appel de notre fonction.
Par exemple, il serait possible de créer une fonction qui additionne tous les nombres passés en arguments :
Code : JavaScript1
2 | addition(12, 5); // nous donnerait 17
addition(21, 4, 15, 11, 6); // nous donnerait 57
|
Ceci n'étant qu'un exemple.
Tenez, vous rappelez-vous de notre fonction
prompt() ?
Eh bien elle possède un second paramètre facultatif : la valeur initiale du champ de saisie.
Essayez plutôt ceci :
Code : JavaScript1
2 | var nombre = prompt('Entrez un nombre', 'Votre nombre ici');
alert('Vous avez tapé ' + nombre);
|
Si on ne donne pas de second paramètre, le champ est initialement vide. Mais si on en indique un, alors il aura cette valeur.
Je vous parle de ces arguments pour que vous sachiez qu'ils existent. Cependant, créer des paramètres facultatifs fait appel à des notions que vous ne connaissez pas encore. Nous approfondirons donc ce sujet un peu plus tard, dès que vous aurez les éléments nécessaires.