97 votes

Pourquoi les fonctions de flèche n'ont pas le tableau d'arguments?

 function foo(x) {
   console.log(arguments)
} //foo(1) prints [1]
 

mais

 var bar = x => console.log(arguments) 
 

donne l'erreur suivante lorsqu'il est invoqué de la même manière:

 Uncaught ReferenceError: arguments is not defined
 

160voto

Sylwester Points 7142

Les fonctions fléchées n'ont pas cela car l'objet arguments -like ressemblant à un tableau était une solution de contournement pour commencer, que ES6 a résolue avec un paramètre de repos:

 var bar = (...arguments) => console.log(arguments);
 

arguments n'est en aucun cas réservé ici, mais simplement choisi. Vous pouvez l'appeler comme vous le souhaitez et il peut être combiné avec des paramètres normaux:

 var test = (one, two, ...rest) => [one, two, rest];
 

Vous pouvez même aller dans l'autre sens, illustré par cette fantaisie s'appliquent:

 var fapply = (fun, args) => fun(...args);
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X