Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

L'opérateur function

Le mot-clé function permet de définir une fonction à l'intérieur d'une expression.

Syntaxe

function [nom]([param1[, param2[, ..., paramN]]]) {
   instructions
}

Paramètres

nom
Le nom de la fonction. Peut être omis, auquel cas on parlera d'une fonction anonyme.
paramN
Le nom d'un paramètre à passer à la fonction.
instructions
Les instructions constituant le corps de la fonction.

Description

Une expression de fonction est très similaire et a presque la même syntaxe qu'une déclaration de fonction (consultez la page sur l'instruction function pour plus de détails). La différence principale entre une expression de fonction et une instruction est le nom de la fonction. En effet, pour les expressions, celui peut être omis (on parle alors d'une fonction anonyme). Consultez l'article Fonctions pour des informations concernant les différences entre les instructions de fonctions et les expressions de fonctions.

Exemples

L'exemple qui suit définit une fonction anonyme et l'assigne à une variable x. La fonction renvoie le carré de son paramètre :

var x = function(y) {
   return y * y;
};

Expression nommée

Si on souhaite faire référence à une fonction au sein du corps de la fonction, il faudra créer une expression de fonction nommée. Le nom sera alors local au corps de la fonction (portée). Cela permet entre autres d'éviter d'utiliser la propriété non-standard arguments.callee.

var math = {
  'factorielle': function factorielle(n) {
    if (n <= 1)
      return 1;
    return n * factorielle(n - 1);
  }
};

IIFE pour Immediately Invoked Function Expression ou expression de fonction immédiatement appelée

On peut utiliser une expression de fonction pour créer une « IIFE », c'est-à-dire une expression de fonction qu'on appelle dès sa définition :

var a = "coucou";
var b = "monde";

// IIFE
(function(x, y) {
  console.log(x + " " + y);
})(a, b);
// coucou monde

Spécifications

Spécification Statut Commentaires
ECMAScript 2016 Draft (7th Edition, ECMA-262)
La définition de 'Function definitions' dans cette spécification.
Projet  
ECMAScript 2015 (6th Edition, ECMA-262)
La définition de 'Définitions de fonction' dans cette spécification.
Standard  
ECMAScript 5.1 (ECMA-262)
La définition de 'Définitions de fonction' dans cette spécification.
Standard  
ECMAScript 3rd Edition (ECMA-262)
La définition de 'Définitions de fonction' dans cette spécification.
Standard Définition initiale. Implémentée avec JavaScript 1.5.

Compatibilité des navigateurs

Fonctionnalité Chrome Firefox (Gecko) Internet Explorer Opera Safari
Support simple (Oui) (Oui) (Oui) (Oui) (Oui)
Fonctionnalité Android Chrome pour Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Support simple (Oui) (Oui) (Oui) (Oui) (Oui) (Oui)

Voir aussi

Étiquettes et contributeurs liés au document

 Contributeurs à cette page : SphinxKnight, teoli, Jeremie, Mgjbot, BenoitL
 Dernière mise à jour par : SphinxKnight,