[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Operators/function [Back]  [Original]

L'oprateur function - JavaScript | MDN

Cette page a t traduite partir de l'anglais par la communaut. Vous pouvez contribuer en rejoignant la communaut francophone sur MDN Web Docs.

View in English Always switch to English

L'oprateur function

Baseline Large disponibilit

Cette fonctionnalit est bien tablie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

Le mot-cl function permet de dfinir une fonction l'intrieur d'une expression.

Note : Il est galement possible de dfinir des fonctions grce au constructeur Function et aux dclarations de fonction.

Dans cet article

Exemple interactif

const getRectArea = function (width, height) {
  return width * height;
};

console.log(getRectArea(3, 4));
// Expected output: 12

Syntaxe

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

Paramtres

nom

Le nom de la fonction. Peut tre omis, auquel cas on parlera d'une fonction anonyme.

paramN

Le nom d'un paramtre passer la fonction.

instructions

Les instructions constituant le corps de la fonction.

Note : partir d'ES2015/ES6, on peut galement former des expressions de fonction avec des fonctions flches.

Description

Une expression de fonction est trs similaire et a presque la mme syntaxe qu'une dclaration de fonction (consultez la page sur l'instruction function pour plus de dtails). La diffrence 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 diffrences entre les instructions de fonctions et les expressions de fonctions. Une fonction peut tre appele immdiatement aprs sa dfinition (on parle alors de fonction invoque immdiatement ou IIFE pour Immediately Invoked Function Expression en anglais).

Remonte (hoisting) des expressions de fonction

En JavaScript, les expressions de fonction ne sont pas remontes ( la diffrence des dclarations de fonction). Il est donc impossible d'utiliser les expressions de fonction avant leur dfinition :

js
nonRemonte(); // TypeError: nonRemonte is not a function

var nonRemonte = function () {
  console.log("truc");
};

Exemples

L'exemple qui suit dfinit une fonction anonyme et l'assigne une variable x. La fonction renvoie le carr de son paramtre :

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

Expression nomme

Si on souhaite faire rfrence une fonction au sein du corps de la fonction, il faudra crer une expression de fonction nomme. Le nom sera alors local au corps de la fonction (porte). Cela permet entre autres d'viter d'utiliser la proprit non-standard arguments.callee.

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

La variable affecte l'expression de fonction aura une proprit name. Ce nom n'est pas modifi si la variable est raffecte. Si le nom de la fonction est absent, ce sera celui de la variable (nom implicite ). Cela vaut galement pour les fonctions flches :

js
var toto = function () {};
console.log(toto.name); // "toto"

var toto2 = toto;
console.log(toto2.name); // "toto"

var truc = function machin() {};
console.log(truc.name); // "machin"

IIFE pour Immediately Invoked Function Expression ou expression de fonction immdiatement appele

On peut utiliser une expression de fonction pour crer une IIFE , c'est--dire une expression de fonction qu'on appelle ds sa dfinition :

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

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

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-function-definitions

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page