: javascript

Paramètres des fonctions

Les paramètres sont des informations transmises à une fonction lors d'un appel. Ces informations peuvent être différentes d'un appel à l'autre.

Exemple simple:

function calculeSurface(largeur, hauteur) {
  return largeur * hauteur; // calcul la surface et la retourne
}

Cette fonction calcule la surface d'un rectangle. Pour ce faire, elle a besoin de connaitre la largeur et la hauteur du rectangle. Ces deux informations sont passées en paramètre.

Exemple d'utilisation:

var s = calculeSurface(8, 4); // s prend 32 comme valeur
alert( calculeSurface(2, 3) ); // affiche 6

Comme on le voit ici, la fonction est appelée deux fois, mais avec des valeurs différentes. Les valeurs données lors d'un appel sont copiées dans les paramètres dans le même ordre. Lors du premier appel, largeur vaut 8 et hauteur vaut 4.

Paramètres optionnels

En javascript il est possible de passer plus de paramètres qu'elle n'en attend dans sa signatureLa signature d'une fonction est son nom ainsi que les paramètres attendus. Il est aussi possible d'en donner moins, au même aucun. La fonction sera tout de même appelée. Cependant c'est la fonction qui doit gérer le surplus ou le manque de paramètres.

Manque de paramètre

Si on reprend l'exemple ci-dessus pour calculer la surface d'un rectangle on pourrait admettre que si un seul paramètre est donné il s'agirait d'un carré (largeur identique à la hauteur). On peut gérer ça ainsi:

function calculeSurface(largeur, hauteur) {
  if(typeof hauteur == 'undefined') hauteur = largeur;
  return largeur * hauteur; // calcul la surface et la retourne
}

var surface_care = calculeSurface(12); // retourne 144

Excédent de paramètre

Une fonction peut aussi gérer des paramètre excédentaires. Comme il n'y a pas de variable de paramètre déclarée dans la signature de la fonction elle doit utiliser le tableau arguments qui contient toutes les valeurs des paramètres dans l'ordre.

Voici un exemple d'une fonction qui calcule la somme de toutes les valeurs passées en paramètres. Comme le nombre de paramètres n'est pas connu d'avance, on doit utiliser une boucle.

function somme() {
  var r = 0; // résultat
  for(var i=0;i<arguments.length;i++) {
    r += arguments[i]; // ajoute au résultat
  }
  return r;
}

alert( somme(1, 2, 3) ); // affiche 6
alert( somme(4) ); // affiche 4
alert( somme() ); // affiche 0
Editer