Warning: expression closures are deprecated
Message
Warning: expression closures are deprecated
Type d'erreur
Un avertissement, l'exécution du code JavaScript ne sera pas interrompue.
Quel est le problème ?
La syntaxe non-standard avec une expression de fermeture est dépréciée et ne devrait plus être utilisée. Cette syntaxe sera complètement retirée avec le bug bug 1083458 et les scripts qui l'utilisent déclencheront alors une exception SyntaxError
.
Exemples
Syntaxe dépréciée
Les expression de fermeture permettent de ne pas utiliser les accolades ou les instructions return
au sein d'une déclaration de fonction ou pour une définition de méthode dans un objet.
var x = function() 1;
var obj = {
count: function() 1
};
Syntaxe standard
Pour convertir cette syntaxe non-standard en une syntaxe standard, il suffit d'ajouter des accolades et l'instruction return.
var x = function() { return 1; }
var obj = {
count: function() { return 1; }
};
Syntaxe standard avec les fonctions fléchées
On peut aussi utiliser les fonctions fléchées :
var x = () => 1;
Syntaxe standard avec la notation raccourcie pour les méthodes
On retrouve parfois les expressions de fermeture dans les accesseurs et les mutateurs, par exemple :
var obj = {
get x() 1,
set x(v) this.v = v
};
Grâce aux définitions de méthodes ES2015, on peut convertir le fragment de code précédent en :
var obj = {
get x() { return 1 },
set x(v) { this.v = v }
};