utiliza una tipos terminar pasar parametros para pagina otra las instrucciones funciones funcion ejemplos desde datos codigo argumentos anonimas javascript

una - Pasando argumentos a otra función javascript



pasar parametros javascript onclick (3)

Operador de propagación

El operador de difusión permite que una expresión se expanda en lugares donde se esperan múltiples argumentos (para llamadas a funciones) o múltiples elementos (para literales de matriz).

ECMAScript ES6 agregó un nuevo operador que le permite hacer esto de una manera más práctica: ... Operador de propagación .

Ejemplo sin usar el método de apply :

function a(...args){ b(...args); b(6, ...args, 8) // You can even add more elements } function b(){ console.log(arguments) } a(1, 2, 3)

Nota Este fragmento de código devuelve un error de sintaxis si su navegador aún usa ES5.

Nota del editor: como el fragmento de console.log() usa console.log() , debe abrir la consola JS de su navegador para ver el resultado , no habrá resultados en la página.

Se mostrará este resultado:

En resumen, el operador de propagación se puede usar para diferentes propósitos si está utilizando matrices, por lo que también se puede usar para argumentos de función, puede ver un ejemplo similar explicado en los documentos oficiales: Parámetros de descanso

Esta pregunta ya tiene una respuesta aquí:

He intentado lo siguiente sin éxito:

function a(args){ b(arguments); } function b(args){ // arguments are lost? } a(1,2,3);

En la función a, puedo usar la palabra clave argumentos para acceder a una serie de argumentos, en la función b estos se pierden. ¿Hay alguna forma de pasar argumentos a otra función javascript como intento hacerlo?


La explicación que ninguna de las otras respuestas proporciona es que los argumentos originales todavía están disponibles, pero no en la posición original en el objeto de arguments .

El objeto de arguments contiene un elemento para cada parámetro real proporcionado a la función. Cuando llamas a , suministras tres argumentos: los números 1 , 2 y 3 . Entonces, los arguments contienen [1, 2, 3] .

function a(args){ console.log(arguments) // [1, 2, 3] b(arguments); }

Sin embargo, cuando llama a b , pasa exactamente un argumento: el objeto de arguments . Así que los arguments contienen [[1, 2, 3]] (es decir, un elemento, que es el objeto de arguments , que tiene propiedades que contienen los argumentos originales a).

function b(args){ // arguments are lost? console.log(arguments) // [[1, 2, 3]] } a(1,2,3);

Como demostró @Nick, puede usar apply para proporcionar un objeto de arguments establecidos en la llamada.

Lo siguiente logra el mismo resultado:

function a(args){ b(arguments[0], arguments[1], arguments[2]); // three arguments }

Pero apply es la solución correcta en el caso general.


Use .apply() para tener el mismo acceso a los arguments en la función b , como esto:

function a(){ b.apply(null, arguments); } function b(){ alert(arguments); //arguments[0] = 1, etc } a(1,2,3);​

Puedes probarlo aquí .