JavaScript est d'abord et avant tout un langage fonctionnel, donc un langage où la fonction est un citoyen de première classe.
Ce qui suit présente quelques exemples mettant en valeur cet aspect du langage.
L'exemple suivant montre comment une référence sur une fonction locale à une fonction peut être entreposée dans une variable ou passée en paramètre à une fonction.
function appliquer(f, arg) {
return f(arg);
}
function testA() {
var f = function(x) {
return x + 0.5;
};
alert("appliquer(f, 3.5) == " + appliquer(f,3.5));
}
L'exemple suivant montre comment une fonction peut être retournée par une fonction, puis utilisée dans le code appelant
function creer() {
return function(arg) {
return arg < 0? arg - 0.5 : arg + 0.5;
};
}
function testB() {
var f = creer();
alert("f(3.5) == " + f(3.5));
}
L'exemple suivant montre comment une fonction peut définir une fermeture, un peu comme une expression λ
function generer(n) {
return function() {
return n++;
};
}
function testC() {
var gen = generer(0);
alert("gen(), gen(), gen() -> " + gen() + ", " + gen() + ", " + gen());
}
Quelques liens pour enrichir le propos :