tipos sintaxis globales funciones funcion flecha example anonimas javascript ecmascript-6 arrow-functions

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