Table des matières
Fonctions
Déclaration
Exemple la déclaration d'une fonction qui renvoie la somme des entiers plus petits que n,
en Python
def somme(n):
total = 0
for i in range(n):
total += i
return total
et en JS
function somme(n) {
let total = 0;
for (let i = 1; i < n; i++) {
total += i;
}
return total;
}
Vous constater que ce n'est pas très différent.
let et var
Dans beaucoup de langages, comme en Python, les variables définies dans une fonction n'existent que le temps de la fonction.
def f(x):
y = 5
return x + y
a = f(60)
print(y) # Erreur, y n'existe plus !
function f(x){
var y = 5;
return x + y;
}
var a = f(60);
console.log(y) // Erreur, y n'existe plus !
En JS, une variable définie par var existe le temps du bloc de la fonction dans la quelle la variable est définie.
Mais en JS – comme par exemple en Lua – on dispose du mot-clé let qui permet de faire encore plus fin : une variable déclarée par let n'existe que le temps du bloc où elle est définie.
{
let x = 3;
console.log(x); // x existe
}
console.log(x); // x n'existe plus !
Dans cet exemple, x est défini à l'intérieur d'un bloc délimité par { }. Dès que l'on sort de ce bloc, x n'existe plus.
Fonction anonyme
En JS, comme d'ailleurs en Python, une fonction est une donnée – une donnée un peu spécial mais une donnée tout de même.
Les deux définitions sont équivalentes :
function somme(n) {
let total = 0;
for (let i = 1; i < n; i++) {
total += i;
}
return total;
}
let somme = function(n) {
let total = 0;
for (let i = 1; i < n; i++) {
total += i;
}
return total;
}
Dans le cas de droite, on utilise le mot clé function pour définir une fonction mais on ne lui associe pas de nom. On appelle cela une fonction anonyme. On peut néanmoins stocker cette fonction dans une variable, par exemple somme, ce qui revient au même.
Quand on définit les fonctions normalement, elles sont définies globalement. Elles sont visibles de tout le programme. Cela peut-être gênant dans un gros programme. Parfois, on souhaite définir une fonction qui n'existerait que le temps d'un besoin local. En définissant la fonction comme à droite, la fonction est associée à la variable somme qui n'existe que localement. Ainsi, dès que la variable somme n'est plus utilisée, la fonction qu'elle contenait disparaît.
