Fonction

Une fonction est une portion de code qui peut être appelée par d'autres codes ou par elle-même ou par une variable qui se réfère à la fonction. Lorsqu'une fonction est appelée, des arguments lui sont généralement donnés en entrée. La fonction peut également retourner une valeur de sortie. En JavaScript, une fonction est aussi un objet.

Un nom de fonction est un identifiant déclaré dans le cadre d'une déclaration de fonction ou d'une expression de fonction. Le fait que le nom de fonction soit déclaré ou exprimé impacte la portée du nom de fonction.

Différents types de fonctions

Une fonction anonyme est une fonction sans nom de fonction. Seules les expressions de fonction peuvent être anonymes. Les déclarations de fonctions doivent avoir un nom :

js
// Fonction anonyme créée comme expression de fonction
(function () {});

// Fonction anonyme créée comme fonction fléchée
() => {};

Les termes qui suivent ne sont pas utilisés dans la spécification du langage ECMAScript, il s'agit d'un jargon souvent utilisé pour faire référence aux différents types de fonction.

Une fonction nommée est une fonction avec un nom de fonction :

js
// Déclaration de fonction
function toto() {}

// Expression de fonction nommée
(function truc() {});

// Fonction fléchée nommée
const machin = () => {};

Une fonction imbriquée (ou fonction interne) est une fonction à l'intérieur d'une autre fonction (carre dans l'exemple suivant). Une fonction englobante est une fonction qui contient une fonction (ajouteCarres dans l'exemple suivant) :

js
function ajouteCarres(a, b) {
  function carre(x) {
    return x * x;
  }
  return carre(a) + carre(b);
}

// Fonction fléchée
const ajouteCarres2 = (a, b) => {
  const carre = (x) => x * x;
  return carre(a) + carre(b);
};

Une fonction récursive est une fonction qui fait appel à elle-même. Voir la page du glossaire sur la récursion.

js
function boucle(x) {
  if (x >= 10) return;
  boucle(x + 1);
}

// Fonction fléchée
const boucle2 = (x) => {
  if (x >= 10) return;
  boucle2(x + 1);
};

Une expression de fonction invoquée immédiatement (IIFE pour Immediately Invoked Function Expressions en anglais) est une fonction appelée directement après le chargement de la fonction dans le compilateur du navigateur. Pour identifier une IIFE, on cherchera les parenthèses gauche et droite supplémentaires à la fin de la déclaration de la fonction.

Les expressions de fonction, nommées ou anonymes, peuvent être appelées immédiatement.

js
(function toto() {
  console.log("Coucou Toto");
})();

(function toutou() {
  console.log("Coucou Toutou");
})();

(() => console.log("Bonjour le monde"))();

Les fonctions créées avec des déclarations ne peuvent pas être appelées immédiatement ainsi. Les IIFE doivent être des expressions de fonction.

js
function toto() {
  console.log("Coucou toto");
}();

Voir la page du glossaire sur les IIFE pour en savoir plus.

Voir aussi