--- title: Fonction slug: Glossary/Function tags: - Encodage - Fonctions - Glossaire - IIFE - Introduction - JavaScript translation_of: Glossary/Function original_slug: Glossaire/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 {{Glossary("Variable","variable")}} qui se réfère à la fonction. Lorsqu'une fonction est appelée, des {{Glossary("Argument","arguments")}} lui sont généralement donnés en entrée. La fonction peut également retourner une valeur de sortie. En {{glossary("JavaScript")}}, une fonction est aussi un {{glossary("Object","objet")}}.

Un nom de fonction est un {{Glossary("identifier","identifiant")}} déclaré dans le cadre d'une déclaration de fonction ou de l'expression d'une fonction. Le fait que le nom de fonction soit déclaré ou exprimé impacte la {{Glossary("Scope","portée")}} du nom de fonction.

Différents types de fonctions

Une fonction anonyme est une fonction sans nom de fonction :

function () {};
// ou en utilisant la notation de flèche de ECMAScript 2015
() => {};

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

function foo() {};
// ou en utilisant la notation de flèche de ECMAScript 2015
const foo = () => {};

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

function addSquares(a,b) {
   function square(x) {
      return x * x;
   }
   return square(a) + square(b);
};
//En utilisant la notation de flèche de ECMAScript 2015
const addSquares = (a,b) => {
   const square = x => x*x;
   return square(a) + square(b);
};

Une fonction récursive est une fonction qui fait appel à elle-même. Voir {{Glossary("Recursion","récursion")}}.

function loop(x) {
   if (x >= 10)
      return;
   loop(x + 1);
};
//En utilisant la notation de flèche de ECMAScript 2015
const loop = x => {
   if (x >= 10)
      return;
   loop(x + 1);
};

Une expression de fonction invoquée immédiatement (IIFE) est une fonction appelée directement après le chargement de la fonction dans le compilateur du navigateur. La façon d'identifier une IIFE est de localiser les parenthèses gauche et droite supplémentaires à la fin de la déclaration de la fonction.

// Erreur (https://en.wikipedia.org/wiki/Immediately-invoked_function_expression)
/*
​function foo() {
    console.log('Hello Foo');
}();
*/

(function foo() {
    console.log("Hello Foo");
}());

(function food() {
    console.log("Hello Food");
})();

Si vous souhaitez en savoir plus sur les IIFE, consultez la page suivante sur Wikipedia : Expression de la fonction immédiatement invoquée

En apprendre plus

Informations Techniques