Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

[Duda] Inicializar variables dentro de un LOOP

var miembrosTotal = parseInt(prompt("Ingrese el numero de miembros de su familia")); var contador = 1; var totalEdades = 0;

while( contador <= miembrosTotal  ) { 

    var edad = parseInt(prompt("Ingrese la edad del familiar"));

     totalEdades = totalEdades + edad;

        contador++;
}

En la clase el instructor indica que NO SE DEBE inicializar una variable dentro del loop , sin embargo EDAD no esta definida fuera ( y el codigo funciona perfectamente) , me quede con esa duda . 

si alguien puede ayudarme a aclararla estare muy agradecida 
1 respuesta

Hola Damelis,

Entiendo tu duda sobre inicializar variables dentro de un bucle. En el código que compartiste, la variable "edad" se inicializa dentro del bucle while y funciona correctamente. Esto se debe a que JavaScript tiene un concepto llamado "hoisting" que eleva las declaraciones de variables al principio del ámbito en el que se encuentran.

En tu caso, aunque la variable "edad" se inicializa dentro del bucle, JavaScript la eleva al principio del ámbito de la función, por lo que se puede acceder a ella en cualquier parte del bucle. Esto es lo que permite que el código funcione correctamente.

Sin embargo, es importante tener en cuenta que el hoisting puede llevar a confusiones y errores si no se comprende correctamente. Por eso, es una buena práctica declarar las variables al principio del ámbito en el que se van a utilizar, para evitar posibles problemas.

Por ejemplo, podrías declarar la variable "edad" antes del bucle while, de esta manera:

var miembrosTotal = parseInt(prompt("Ingrese el número de miembros de su familia"));
var contador = 1;
var totalEdades = 0;
var edad; // Declaración de la variable edad

while (contador <= miembrosTotal) {
  edad = parseInt(prompt("Ingrese la edad del familiar"));

  totalEdades = totalEdades + edad;

  contador++;
}

De esta forma, queda claro que la variable "edad" se utiliza dentro del bucle, pero su declaración se realiza antes del bucle.

Puedes si deseas entender más sobre este asunto leer nuestro artículo sobre hoisting: https://www.aluracursos.com/blog/hoisting-en-javascript

Espero que esto aclare tu duda. Si tienes alguna otra pregunta, estaré encantado de ayudarte.

¡Saludos!

Si este post te ayudó, por favor marca como solucionado ✓. ¡Continúa con tus estudios!