function en JavaScript : déclarer une fonction et choisir sa forme

function déclare une fonction nommée, disponible avant même sa propre ligne : la forme historique, à distinguer de l'expression et de la fonction fléchée.
3 min de lecture
Believemy logo

Une fonction, c'est un morceau de programme auquel on donne un nom pour le rejouer autant de fois qu'on veut, avec des données différentes. JavaScript en propose trois écritures.

Le mot-clé function désigne la plus ancienne des trois. Elle a une propriété que les autres n'ont pas, et c'est souvent elle qui tranche.


Définition

Une déclaration function associe un nom, une liste de paramètres et un corps entre accolades. La valeur produite par le corps sort par return ; sans lui, l'appel vaut undefined.

JAVASCRIPT
console.log(prixTTC(100));   // 120 : la fonction est déjà disponible

function prixTTC(ht) {
  return ht * 1.2;
}

L'appel placé avant la déclaration fonctionne. Le moteur lit le fichier d'abord, y repère les déclarations de fonctions et les rend utilisables partout dans leur portée, corps compris. Ce comportement s'appelle la remontée, et il n'existe que pour cette forme.


Trois écritures pour une même idée

JAVASCRIPT
function aire(l, h) { return l * h; }              // déclaration
const aire2 = function (l, h) { return l * h; };   // expression
const aire3 = (l, h) => l * h;                     // fonction fléchée

Les trois calculent la même chose. Ce qui les sépare tient en deux points.

FormeDisponible avant sa ligneValeur de this
DéclarationOui, nom et corpsDépend de l'appel
ExpressionNonDépend de l'appel
Fonction fléchéeNonHéritée du code autour

En pratique, la fonction fléchée s'impose pour les fonctions courtes passées en argument, comme celles que reçoivent Array.forEach() ou Array.filter(), parce qu'elle ne redéfinit pas this. La déclaration reste préférable pour les fonctions principales d'un module, appelées sans se soucier de l'ordre des lignes.


Les paramètres

Un paramètre peut recevoir une valeur par défaut, utilisée quand l'appel n'en donne pas. Le dernier peut être précédé de trois points pour absorber les arguments restants dans un tableau : c'est le paramètre Rest (...).

JAVASCRIPT
function facture(client, taux = 0.2, ...lignes) {
  const ht = lignes.reduce((s, n) => s + n, 0);
  return { client, ttc: ht * (1 + taux) };
}

console.log(facture("Alice", 0.2, 12, 30, 8));  // { client: 'Alice', ttc: 60 }
Bon à savoir

Une fonction déclarée avec function dispose aussi de l'objet arguments, qui contient tous les arguments reçus. Il n'a survécu que par compatibilité : ...rest le remplace, en produisant un vrai Array (tableau).


Questions fréquentes

Question

Faut-il préférer function ou la fonction fléchée ?

La fonction fléchée convient partout où la fonction est courte et passée en argument, et sa gestion de this évite une classe entière de bugs. La déclaration function garde l'avantage pour les fonctions nommées d'un module, où la remontée permet de ranger le code par importance plutôt que par ordre d'appel.


Question

Une fonction peut-elle être passée en argument ?

Oui, et c'est un usage central du langage. Une fonction est une valeur comme une autre : elle se range dans une variable, se passe en argument, se renvoie par return. C'est ce qui rend possibles Array.reduce() ou filter, qui reçoivent le traitement à appliquer.


Question

Que se passe-t-il si j'appelle une fonction avec trop peu d'arguments ?

Aucune erreur n'est levée. Les paramètres non fournis valent undefined, et le corps s'exécute quand même, jusqu'à produire un résultat absurde plusieurs étapes plus loin. C'est la raison d'être des valeurs par défaut, et la première chose que typeof permet de vérifier quand un calcul renvoie NaN sans explication. Notre formation JavaScript consacre un chapitre au découpage en fonctions, là où se joue la lisibilité d'un projet qui grossit.

Termes connexes

Découvrez notre glossaire JavaScript

Tous les mots de JavaScript expliqués simplement : mots-clés, objets natifs, méthodes, erreurs et concepts. Définitions claires et exemples qui tournent, pour apprendre et pour se dépanner.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.