Saltar al contenido principal
Codigo Heroe
Tarea anterior
Introducción a los eventos17/21
A la lista de tareas
  1. 1. Eventos del usuario
  2. 2. Añadir un manejador de eventos
  3. 3. Sintaxis de los manejadores
  4. 4. Acciones predeterminadas
  5. 5. Funciones como argumentos
  6. 6. Eliminar clases con classList.remove()
  7. 7. Eventos de teclado
  8. 8. Identificar una tecla
  9. 9. Cerrar una ventana con ESC
  10. 10. Seleccionar los elementos de una galería
  11. 11. Añadir manejadores en un ciclo
  12. 12. Cambiar el src de una imagen
  13. 13. Depurar un manejador
  14. 14. Ámbito local
  15. 15. Ámbito global
  16. 16. Cambiar variables externas
  17. 17. Funciones dentro de funciones
  18. 18. Cierres
  19. 19. Un cierre en cada llamada
  20. 20. Usar cierres en los manejadores
  21. 21. Completar la galería
Siguiente tarea
  • Matriz de skills
  • Cursos
  • Registro
  • Iniciar sesión

Loading…
En unos segundos, estará listo.

  • Teoría
  • Teoría

Funciones dentro de funciones

Ya vimos que reasignar una variable global cambia el resultado de las funciones que la utilizan. Depender de esos cambios puede provocar resultados inesperados y errores. Los parámetros nos permiten reutilizar funciones pasándoles explícitamente los valores necesarios.

Con los parámetros todo resulta sencillo cuando queremos llamar a una función y obtener el resultado en ese momento.

var eatDinner = function (food) {
  console.log('Comí ' + food);
};

eatDinner('bistec');
// Muestra: Comí bistec

¿Y si queremos preparar una función con sus propios datos y utilizarla más tarde? Es lo que hacemos con los manejadores: creamos la función, usamos valores dentro y esperamos a que ocurra un evento para obtener el resultado. A veces no sale como esperamos, como en nuestra galería. Pero estamos cerca de resolverlo.

Volvamos a la escuela. ¿Y si no quieres comer apio ni depender de lo que haya en el comedor? ¡Puedes llevar comida de casa! Así tendrás un recipiente en la mochila, listo para sacarlo y comer cuando quieras. ¿Cómo lo hacemos en código?

var collectContainer = function () {
  var food = 'pasta';
  var eatDinner = function () {
    console.log('Comí ' + food);
  }
  return eatDinner;
};

var schoolkid = collectContainer();
// La variable contiene la función eatDinner,
// devuelta por collectContainer

// Llamamos a eatDinner desde la variable schoolkid
schoolkid();
// Muestra: Comí pasta

No te preocupes: en el siguiente ejercicio veremos con detalle cómo funciona esta expresión y por qué. Por ahora, comprobemos que se ejecuta tal como muestra el ejemplo.

  • script.js
JavaScript
var collectContainer = function () { var food = 'pasta'; var eatDinner = function () { console.log('Comí ' + food); }; return eatDinner; };
Consola

El código ha cambiado, haga clic en "Ejecutar" o active la ejecución automática.

Resultado de la ejecución

ObjetivosRealizado
0
    1. Después de definir collectContainer, declara la variable schoolkid.
    2. En la declaración de schoolkid, asígnale el resultado de llamar a collectContainer.
    3. Debajo, muestra la variable schoolkid en la consola.
    4. Debajo, llama a la función recibida: schoolkid().
    Codigo Heroe

    © 2023-2026, codigoheroe.com