Saltar al contenido principal
Codigo Heroe
Tarea anterior
Introducción a los eventos14/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

Ámbito local

¡Encontramos el error! El índice del último elemento de photos es 4, pero i vale 5 sin importar en qué miniatura hagamos clic. No hay ningún elemento con ese índice en el arreglo. Por eso obtenemos undefined en lugar de una ruta y no aparece ninguna imagen. ¿Por qué ocurre?

Dejemos un momento la galería para conocer una idea importante de JavaScript. Nos ayudará a resolver el problema.

Escribiremos la función eatDinner, que muestra mensajes sobre nuestro almuerzo en la consola. Tiene un parámetro drink y una variable food.

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

eatDinner('agua de frutas');
// Muestra: Comí pasta
// Muestra: Bebí agua de frutas

console.log('Comí ' + food);
// Produce un error

console.log('Bebí ' + drink);
// Produce un error

Si intentamos acceder a food desde fuera de la función, obtendremos un error. Las variables declaradas en el cuerpo de una función están disponibles dentro de ella; no podemos acceder a ellas desde fuera.

Lo mismo ocurre con los parámetros. Aunque el argumento se pasa desde fuera, el parámetro se comporta como una variable interna de la función.

¿Por qué?

Cada función tiene un ámbito, que determina a qué variables puede acceder su código. Como food está declarada dentro de eatDinner, pertenece al ámbito de esa función, igual que drink. Son variables locales. Su ámbito se limita a la función donde se declaran y se llama ámbito local.

Comprobémoslo: llamaremos a la función y después intentaremos acceder desde fuera a su variable y a su parámetro.

  • script.js
JavaScript
var eatDinner = function (drink) { var food = 'croquetas'; console.log('Comí ' + food); console.log('Bebí ' + drink); };
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. Debajo de la declaración de eatDinner, llama a la función con el argumento 'té'.
    2. Después de la llamada, muestra en la consola 'Comí ' + food.
    3. En esa misma instrucción, sustituye la expresión por 'Bebí ' + drink.
    Codigo Heroe

    © 2023-2026, codigoheroe.com