8.2 Paramètres facultatifs d'une fonction |
See You Why? |
On a vu dans les séquences précédentes que l'on pouvait définier des fonctions sans arguments ou paramètres, ou des fonctions à un paramètres, voire même des fonctions à plusieurs paramètres.
Imaginons ici la création d'un script qui arrondisse une valeur. Le chapitre 12, relatif aux opérateurs mathématiques, ne vous apportera pas d'aide... la séquence 34.2, qui traite des méthodes de l'objet mathématique, va vous montrer que :
* Math.ceil(1.357)
renvoie la valeur 2,
car 2 est le plus petit entier supérieur ou égal à 1.357 ;
* Math.floor(13.57)
renvoie la valeur 13,
car 13 est le plus grand entier inférieur ou égal à 13.57 ;
* Math.round(-13.57)
renvoie la valeur -14,
car -14 est l'entier le plus proche de -13.57 qui est compris entre -14 et -13.
Magnifique, pour arrondir il me suffira d'employer Math.round(valeur)... Malheureusement non, car ces trois méthodes ci-dessus ne renvoient que des entiers et notre but est de pouvoir arrondir toute valeur avec 0, 1 voire 2 ou 4 chiffres après la virgule...
Il nous suffira donc de définir une fonction qui devra avoir 2 paramètres, à savoir :
d'une part la valeur à arrondir,
d'autre part la précision que l'on souhaite obtenir (exprimée en nombre de chiffres souhaités).
Voilà donc notre fonction à deux paramètres qui prend forme :
function arrondir(valeur, precision){
}
Plus que trois informations à traiter et le problème sera résolu :
Et le tour est joué... il ne reste qu'à traduire en lagage JS...
function arrondir(valeur, precision){
provisoire = Math.pow(10,precision);
alert(Math.round(valeur*provisoire)/provisoire);
}
Lorsque vous parlez de paramètre facultatif, vous voulez dire paramètre optionnel ? paramètre non obligatoire ? Mais si on n'affecte aucune valeur à ce paramètre, la fonction ne pourra jamais s'exécuter !
Erreur, en JS, une fonction peut s'exécuter valablement, contrairement à de nombreux langages, même si tous ses paramètres ne sont pas définis.
Il suffira de les nommer dans la définition de la fonction et de ne pas oublier de tester l'existence de ces paramètres dans la fonction.
Pour une question de facilité, on pourrait imaginer notre fonction arrondir() pour laquelle on ne stipule pas la précision... il suffirait alors de définir une valeur de 3 par défaut, si aucune autre valeur n'a été donnée, ou une valeur de 2 chiffres après la virgule s'il s'agit de prix.
Le chapitre 14 vous expliquera en détail comment soumettre des instructions à une condition. Retenez pour l'instant la structure
si (condition) {
faire()
}
et en JS on notera if à la place de si .
Notre script retravaillé ci-dessous sera donc identique à celui développé ci-dessus, sauf qu'il permettra de ne pas définir le paramètre précision qui prendrait la valeur 3 si aucun autre argument ne lui a été donné :
function arrondir(valeur, precision){
if ( typeof(precision) == 'undefined' ) {
precision = 3;
}
provisoire = Math.pow(10,precision);
alert(Math.round(valeur*provisoire)/provisoire);
}
Attention cependant, rappelons-nous qu'une variable est de type 'undefined' en JavaScript, si et seulement si elle n'a jamais été déclarée ou n'a jamais été affectée d'aucune valeur...
et que la fonction prompt() reçoit par défaut une valeur de type variable string... et que ne rien répondre renvoie une chaine vide ou "".
voir suite >>>
voir suite >>>