Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.
function
Baseline Widely available
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.
La déclarationfunction (ou l'instructionfunction) permet de définir une fonction et les paramètres que celle-ci utilise.
Dans cet article
Exemple interactif
function calcRectArea(width, height) { return width * height;}console.log(calcRectArea(5, 6));// Expected output: 30Il est également possible de définir des fonctions en utilisant le constructeurFunction et uneexpression de fonction.
Syntaxe
function nom([param1[, param2,[…, paramN]]]) { [instructions]}nomLe nom de la fonction.
paramNLe nom d'un argument à passer à la fonction. Une fonction peut avoir jusqu'à 255 arguments (cela peut varier en fonction des moteurs).
instructionsLes instructions qui constituent le corps de la fonction.
Description
Une fonction créée via une déclaration de fonction est un objetFunction et possède toutes les caractéristiques (propriétés, méthodes et comportement) d'un objetFunction. Voir la pageFunction pour plus d'informations sur ces caractéristiques.
Une fonction peut également être créée en utilisant une expression (voirles expressions de fonctions).
Par défaut, une fonction renvoieundefined. Pour renvoyer une autre valeur en résultat, une fonction doit utiliser une instructionreturn qui définit la valeur à retourner.
Fonctions créées conditionnellement
Il est possible de déclarer des fonctions de façon conditionnelle (c'est-à-dire qu'on peut placer une instruction de déclaration de fonction au sein d'une instructionif). La plupart des navigateurs, autres que ceux basés sur Gecko, traiteront cette déclaration conditionnelle comme si elle était inconditionnelle (que la condition souhaitée soit vérifiée ou non) (voircet article (en anglais) pour un aperçu). Pour cette raison, les déclarations de fonctions ne devraient pas être utilisées pour créer des fonctions de façon conditionnelle. Pour ce faire, il faut privilégier les expressions de fonctions.
var remontee = "toto" in this;console.log( `'toto' ${ remontee ? "est" : "n'est pas" } remontée. typeof toto vaut ${typeof toto}`,);if (false) { function toto() { return 1; }}// Pour Chrome:// 'toto' est remontée. typeof toto vaut undefined//// Pour Firefox:// 'toto' est remontée. typeof toto vaut undefined//// Pour Edge:// 'toto' n'est pas remontée. typeof toto vaut undefined//// Pour Safari:// 'toto' est remontée. typeof toto vaut functionOn obtient exactement les mêmes résultats si la condition est vérifiée (ici avectrue) :
var remontee = "toto" in this;console.log( `'toto' ${ remontee ? "est" : "n'est pas" } remontée. typeof toto vaut ${typeof toto}`,);if (true) { function toto() { return 1; }}// Pour Chrome:// 'toto' est remontée. typeof toto vaut undefined//// Pour Firefox:// 'toto' est remontée. typeof toto vaut undefined//// Pour Edge:// 'toto' n'est pas remontée. typeof toto vaut undefined//// Pour Safari:// 'toto' est remontée. typeof toto vaut functionLa « remontée » des déclarations de fonction
Lorsqu'on utilise une déclaration de fonction pour créer une fonction, la définition de la fonction est « remontée ». Il devient donc possible d'utiliser la fonction avant de l'avoir déclarée :
remontée(); // affiche "toto" dans la consolefunction remontée() { console.log("toto");}On notera que lesexpressions de fonctions ne sont pas remontées :
nonRemontée(); // TypeError: nonRemontée is not a functionvar nonRemontée = function () { console.log("truc");};Exemples
>Utiliserfunction
Dans l'exemple qui suit, on déclare une fonction qui renvoie le total des ventes en fonction des nombres d'unités vendues pour les produitsa,b, etc.
function calc_ventes(nb_produits_a, nb_produits_b, nb_produits_c) { return nb_produits_a * 79 + nb_produits_b * 129 + nb_produits_c * 699;}Spécifications
| Specification |
|---|
| ECMAScript® 2026 Language Specification> # sec-function-definitions> |