10 - Les fonction (2)
Introduction
Nous avons vu comment déclarer des fonctions simplement à l’aide de la structure ci-dessous:
function nom ( paramètres ){
Bloc d'instructions
}
Il existe d’autres méthodes pour déclarer des fonctions (fonctions anonymes ou déclaration flêchée).
Nous avons vu aussi qu’une fonction peut prendre des paramètres comme des entiers, des booléens ou des chanes de caractères et renvoyer des données de ces types là.
Nous verrons comment faire en sorte que les fonctions prennent des tableaux en paramètres et comment elles peuvent renvoyer des tableaux comme résultat.
Fonction anonyme
En Javascript, il est possible de stocker une focntion dans une variable de la façon suivante:
let surfaceCercle = function (rayon){
const PI = 3.1416;
return PI * rayon**2;
}
Ce qui est absolument identique à:
function surfaceCercle (rayon){
const PI = 3.1416;
return PI * rayon**2;
}
Fonction flêchée
On peut aussi définir une fonction de la façon suivante:
let surfaceCercle = rayon => 3.1416 * rayon**2;
Une structure plus générale de la fonction fl^chée serait :
let nomFonction = (param1, param2, ...) => {
instruction1;
instruction2;
}
Dans tous les cas, la fonction est appelée de la même façon.
Paramètres par défaut
Si un paramètre est omis lors de l’appel d’une fonction, il aura alors la valeur undefined
.
Pour éviter cela, on peut donner une valeur par défaut à certains pparamètres.
function direBonjour(nom="Inconnu.e"){
document.write("Bonjour " + nom);
}
direBonjour();
Ce programme affichera Bonjour Inconnu.e
.
Fonctions variadiques
On appelle une fonction variadique une fonction dont le nombre total de paramètres n’est pas défini d’avance.
En JS, toute fonction peut recevoir plus d’arguments que spécifié, il suffit alors d’accéder aux autres paramètres à l’aide du tableau arguments
.
let somme = function(val1, val2){
let resultat = val1+val2;
for (let i=2; i < arguments.length; i++) {
resultat += arguments[ i ];
}
return resultat;
}
ES6 a introduit une nouvelle syntaxe pour définir des fonctions variadiques en utilisant la notation ellipse ...
.
let somme = function(val1, val2, ...autres){
let resultat = val1+val2;
for (let i=0; i < autres.length; i++) {
resultat += autres[ i ];
}
return resultat;
}
Il est préférable d’utiliser cette syntaxe car elle améliore la maintenabilité du code.
En Javascript fonction = données
En JS, une fonction est une donnée qu’on peut affecter…
function surfaceCercle(rayon){
const PI = 3.1416;
return PI * rayon**2;
}
let sc = surfaceCercle;
document.write( sc(10) )
On peut même retourner une fonction :
let creerPuissance = function (puissance){
let resultat = function(valeur){
return valeur ** puissance;
}
return resultat;
}
carre = creerPuissance(2);
// Carre est une fonction créée par creerPuissance
document.write( carre(10) );
Et passer une fonction en paramètre…
let calculer = function (valeur1, valeur2, operation){
let resultat = operation(valeur1, valeur2);
return resultat;
}
let somme = (v1, v2) => v1 + v2;
document.write( calculer(10, 17, somme) );
Faire les exercices 1 à 3
Portée des variables
Une variable définie à l’intérieur d’une fonction n’est pas visible à l’extérieur de la fonction, on parle de variable locale.
Une variable définie à l’extérieur d’une fonction peut être lue et modifiée dans le corps de la fonction, on parle de variable globale.
Tableaux et fonctions
Un tableau en paramètre d’une fonction
Javascript n’étant pas un langage typé, on peut pseer un tableau en paramètre d’une fonction comme on psserait un autre type de variable.
Exemple :
Un tableau comme valeur de retour d’une fonction
De la même façon, un tabeau peut être renvoyé par une fonction.
Faire les exercices 4 à 6