operator, SyntaxError: missing ) after argument list, RangeError: repeat count must be non-negative, TypeError: can't delete non-configurable array element, RangeError: argument is not a valid code point, Error: Permission denied to access property "x", SyntaxError: redeclaration of formal parameter "x", TypeError: Reduce of empty array with no initial value, SyntaxError: "x" is a reserved identifier, RangeError: repeat count must be less than infinity, Warning: unreachable code after return statement, SyntaxError: "use strict" not allowed in function with non-simple parameters, ReferenceError: assignment to undeclared variable "x", ReferenceError: reference to undefined property "x", SyntaxError: function statement requires a name, https://tech.mozfr.org/post/2015/06/10/ES6-en-details-%3A-les-fonctions-flechees, un nouvel objet dans le cas dun constructeur. TypeError: setting getter-only property "x", SyntaxError: Unexpected '#' used outside of class body, SyntaxError: identifier starts immediately after numeric literal, TypeError: cannot use 'in' operator to search for 'x' in 'y', SyntaxError: invalid assignment left-hand side, TypeError: invalid assignment to const "x", SyntaxError: for-in loop head declarations may not have initializers, SyntaxError: a declaration in the head of a for-of loop can't have an initializer, TypeError: invalid 'instanceof' operand 'x', SyntaxError: missing ] after element list, SyntaxError: missing } after function body, SyntaxError: missing } after property list, SyntaxError: missing = in const declaration, SyntaxError: missing name after . // Le constructeur Personne() dfinit `this` comme lui-mme. // Parenthses non ncessaires quand il n'y a qu'un seul argument, // Une fonction sans paramtre peut s'crire avec un couple, // Gestion des paramtres du reste et paramtres par dfaut, // Gestion de la dcomposition pour la liste des paramtres, // Sans la syntaxe des fonctions flches, // Avec, on a quelque chose de plus concis. Vous pouvez galement contribuer en rejoignant la communaut francophone sur MDN Web Docs. Le nom dun argument. // En mode non strict, la fonction grandir() dfinit `this`, // comme l'objet global et pas comme le `this` defini, // La fonction callback se rfre la variable `that`, // |this| fait bien rfrence l'objet personne, // affiche undefined, Window (ou l'objet global de l'environnement), // SyntaxError: invalid arrow-function arguments, // Une fonction flche vide renvoie undefined, // invoque (IIFE en anglais) qui renvoie, Warning: -file- is being assigned a //# sourceMappingURL, but already has one, TypeError: invalid Array.prototype.sort argument, Warning: 08/09 is not a legal ECMA-262 octal constant, SyntaxError: invalid regular expression flag "x", TypeError: X.prototype.y called on incompatible type, ReferenceError: can't access lexical declaration 'X' before initialization, TypeError: can't assign to property "x" on "y": not an object, RangeError: x can't be converted to BigInt because it isn't an integer, TypeError: can't convert BigInt to number, TypeError: can't define property "x": "obj" is not extensible, TypeError: property "x" is non-configurable and can't be deleted, TypeError: can't redefine non-configurable property "x", SyntaxError: applying the 'delete' operator to an unqualified name is deprecated, ReferenceError: deprecated caller or arguments usage, Warning: expression closures are deprecated, SyntaxError: "0"-prefixed octal literals and octal escape seq. are deprecated, SyntaxError: Using //@ to indicate sourceURL pragmas is deprecated. Cette page a t traduite partir de l'anglais par la communaut. Enable JavaScript to view data.

tant donn que this provient du contexte englobant, si on invoque une fonction via la mthode call ou apply, cela ne passera que des arguments mais naura aucun effet sur this : Les fonctions flches nexposent pas dobjet arguments : arguments.length, arguments[0], arguments[1], et autres ne font donc pas rfrence aux arguments passs la fonction flchs. La flche utilise pour une fonction flche nest pas un oprateur. Visit Mozilla Corporations not-for-profit parent, the Mozilla Foundation.Portions of this content are 19982022 by individual mozilla.org contributors. Une expression simple ne ncessite pas daccolades. Sil n'y a aucun argument, cela doit tre indiqu par une paire de parenthses ().

Frequently asked questions about MDN Plus. Les fonctions flches ne crent pas de nouveau contexte, elles utilisent la valeur this de leur contexte. Les fonctions flches sont souvent anonymes et ne sont pas destines tre utilises pour dclarer des mthodes. Par exemple: Jusqua lapparition des fonctions flches, chaque nouvelle fonction dfinissait son propre this : Cela a pu entraner des confusions lorsquon utilisait un style de programmation oriente objet. Les fonctions flches ne possdent pas de prototype: Le mot-cl yield ne peut pas tre utilis dans le corps dune fonction flche (sauf si cela intervient dans une autre fonction, imbrique dans la fonction flche).

Note : Voir aussi larticle sur les fonctions flches prsent sur https://tech.mozfr.org/post/2015/06/10/ES6-en-details-%3A-les-fonctions-flechees (larticle original en anglais est disponible ici). Aussi, si le mot-cl this est utilis dans le corps de la fonction, le moteur recherchera la rfrence cette valeur dans une porte parente. Les fonctions flches peuvent avoir une syntaxe concise ou utiliser un bloc dinstructions classique.

Dans ce cas arguments est simplement une rfrence la variable de mme nom si elle est prsente dans la porte englobante: Les fonctions flches nont donc pas leur propre objet arguments, mais dans la plupart des cas, les paramtres du reste reprsentent une bonne alternative: Comme indiqu prcdemment, les fonctions flches sont mieux indiques pour les fonctions qui ne sont pas des mthodes. Une expression de fonction flche (arrow function en anglais) permet davoir une syntaxe plus courte que les expressions de fonction et ne possde pas ses propres valeurs pour this, arguments, super, ou new.target. Deux facteurs sont lorigine de la conception des fonctions flches: une syntaxe plus courte et labsence de this spcifique la fonction. Attention bien utiliser les parenthses lorsquon souhaite renvoyer des objets avec des littraux: En effet, ici, lanalyse de lexpression trouve des blocs dinstructions au lieu de littraux objets. Pour des aspects fonctionnels, la lgret de la syntaxe est bienvenue. Pour viter cet effet indsirable, on pourra encadrer le littral objet: Il ne peut pas y avoir de saut de ligne entre les paramtres et la flche dune fonction flche. Les fonctions flches ne peuvent pas tre utilises comme constructeurs et lveront une exception si elles sont utilises avec le mot-cl new. Prenons un exemple pour illustrer ce point. lobjet courant si la fonction est appele comme une mthode, etc. Lexpression est galement la valeur de retour implicite pour cette fonction. Les fonctions flches ont des rgles spcifiques quant leur place dans la syntaxe et interagissent diffremment de la prcdence des oprateurs par rapport une fonction classique: BCD tables only load in the browser with JavaScript enabled. Avec ECMAScript 3/5, ce problme a pu tre rsolu en affectant la valeur de this une autre variable: Autrement, on aurait pu utiliser une fonction de liaison afin que la bonne valeur this soit passe la fonction grandir. Use //# instead, Warning: String.x is deprecated; use String.prototype.x instead, Warning: Date.prototype.toLocaleFormat is deprecated. SyntaxError: test for equality (==) mistyped as assignment (=)? Last modified: 30 mai 2022, by MDN contributors. Sur ce dernier point, cela signifie quune fonction flche ne lie pas son propre this au sein de la fonction (il en va de mme avec arguments, super ou new.target). Larticle sur les fonctions flches prsent sur. Sil n'y a quun argument, les parenthses ne sont pas ncessaires (ex. Le reste des rgles du mode strict sont appliques normalement. Cette dernire syntaxe na pas de valeur de retour implicite et il faut donc employer linstruction return.

De fait, les fonctions flchees ne peuvent donc pas tre utilises comme gnrateurs. Plusieurs instructions doivent tre encadres par des accolades, {}. Content available under a Creative Commons license. Le code qui suit fonctionne ainsi de la faon attendue car le this utilis dans setInterval est le thisde la porte de Personne : Ici this provient du contexte englobant, les rgles du mode strict sont donc ignores pour ce qui concerne this. : toto => 1).