javascript - globales - sintaxis funcion flecha
InformaciĆ³n oficial sobre ''argumentos'' en ES6 Funciones de flecha? (2)
Chrome, FF y el nodo parecen estar mal aquí, Babel está en lo correcto:
Las funciones de flecha no tienen
arguments
propios vinculantes en su alcance;
no se crea ningún objeto de argumentos al llamarlos.
buscando documentos oficiales aquí
Las expresiones de función de flecha evalúan las funciones que
tienen su [[ThisMode]] establecido
en
lexical
, y cuando se llaman así, la
instanciación de declaración
no crea un
objeto de
arguments
.
Incluso hay una nota específica (18 a) que establece que "las
funciones de flecha nunca tienen objetos de argumento
".
(() => console.log(arguments))(1,2,3);
// Chrome, FF, Node give "1,2,3"
// Babel gives "arguments is not defined" from parent scope
Según Babel (y de lo que puedo decir las recomendaciones iniciales TC39), eso es "inválido" ya que las funciones de flecha deberían usar su alcance principal para los argumentos. La única información que he podido encontrar que contradice esto es un solo comentario que dice que TC39 rechazó esto, pero no puedo encontrar nada que respalde esto.
Solo estoy buscando documentos oficiales aquí.
Como señaló Bergi, las funciones de flecha no tienen sus propios
arguments
variables.
Sin embargo, si desea capturar los argumentos para su función de flecha, simplemente puede usar un parámetro de descanso
const myFunc = (...args) =>
console.log ("arguments", args)
myFunc (1, 2, 3)
// arguments [1, 2, 3]
Los parámetros de reposo pueden combinarse con otros parámetros posicionales, pero siempre deben incluirse como el último parámetro
const myFunc = (a, b, c, ...rest) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// 1 2 3 [ 4, 5, 6, 7 ]
Si comete el error de escribir un parámetro de reposo en cualquier otra posición, obtendrá un error
const myFunc = (...rest, a, b, c) =>
console.log (a, b, c, rest)
myFunc (1, 2, 3, 4, 5, 6, 7)
// Error: Rest parameter must be last formal parameter