Cette syntaxe est une fonctionnalité dépréciée, spécifique à SpiderMonkey et qui sera prochainement supprimée. En remplacement, il est préférable d'utiliser les fonctions fléchées.
Les expressions de fermetures sont une notation de raccourci pour écrire des fonctions simples.
Syntaxe
function [nom]([param1[, param2[, ..., paramN]]]) expression
Paramètres
nom
- Le nom de la fonction, ce paramètre est optionnel. S'il n'est pas utilisé, la fonction sera anonyme. Le nom de cette fonction est local uniquement pour le corps de la fonction.
paramN
- Le nom d'un argument à passer à la fonction. Une fonction peut avoir jusqu'à 255 arguments.
expression
- L'expression qui correspond au corps de la fonction.
Description
Cet élément du langage n'est qu'une notation raccourcie pour l'écriture de fonctions simples. Il permet d'approcher un peu plus d'une notation correspondant au lambda calcul.
Pour les versions de JavaScript antérieures ou égales à 1.7 :
function(x) { return x * x; }
Avec JavaScript 1.8 :
function(x) x * x
Cette syntaxe permet de ne pas utiliser les accolades et l'instruction return
(ici implicite). En dehors de la concision syntaxique, cet opérateur n'apporte pas d'autre avantage.
Exemples
Un raccourci pour ajouter des gestionnaires d'événements :
document.addEventListener("click", function() false, true);
On peut utiliser cette notation avec les fonctions introduites pour les tableaux avec JavaScript 1.6 :
elems.some(function(elem) elem.type == "text");
Compatibilité des navigateurs
Fonctionnalité | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
---|---|---|---|---|---|
Support simple | Pas de support | (Oui) | Pas de support | Pas de support | Pas de support |
Fonctionnalité | Android | Chrome pour Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|
Support simple | Pas de support | Pas de support | (Oui) | Pas de support | Pas de support | Pas de support |
Notes spécifiques à Gecko
À partir de Gecko / SpiderMonkey 45 (Firefox 45 / Thunderbird 45 / SeaMonkey 2.42), des avertissements dans la console sont ajoutés aux fermetures d'expression (bug 995610).