web-dev-qa-db-fra.com

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
55
Conqueror

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

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);
101
Sylwester