Paso de funciones como parámetros en JavaScript
Las funciones, al igual que los números, las cadenas y los arreglos, pueden pasarse como parámetros a otras funciones.
Consideremos esto más detenidamente con un ejemplo práctico.
Supongamos que tenemos una función test que acepta
dos parámetros:
test(parámetro1, parámetro2);
Pasemos al primer parámetro de la función test
una función anónima que devuelva
1, y al segundo parámetro - una función anónima
que devuelva 2:
test(
function() {return 1;},
function() {return 2;}
);
El código anterior aún no funciona, ya que no hemos creado la función misma. Hagámoslo:
function test(func1, func2) {
}
Al definir la función, especificamos dos parámetros
- func1 y func2. Estos parámetros
no saben nada sobre lo que se les pasará.
Podemos, por ejemplo, pasar números:
test(1, 2); // llamamos a la función
function test(func1, func2) {
console.log(func1); // mostrará 1
console.log(func2); // mostrará 2
}
O podemos pasar funciones:
test(
function() {return 1;}, // primer parámetro
function() {return 2;} // segundo parámetro
);
function test(func1, func2) {
console.log(func1); // mostrará 'function() {return 1;}'
console.log(func2); // mostrará 'function() {return 2;}'
}
Como puede ver, ahora la consola muestra el código fuente de las funciones. Hagamos que muestre sus resultados. Para ello, agreguemos paréntesis a las funciones:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() ); // mostrará 1
console.log( func2() ); // mostrará 2
}
Mostremos en la consola la suma de los resultados de la primera y la segunda función:
test(
function() {return 1;},
function() {return 2;}
);
function test(func1, func2) {
console.log( func1() + func2() ); // mostrará 3
}
Cree una función test que acepte
3 funciones como parámetros. Pase a
ella como primer parámetro una función que devuelva
1, como segundo - una función que devuelva
2, como tercero - una función que devuelva
3. Muestre en la consola la suma de los resultados
de las funciones.