¿Por qué declarar let dentro de un ciclo for?

He notado que en los ejercicios no es necesario declarar a la “i” como variable (ni dentro ni fuera del ciclo) e igual funciona el programa.

1 me gusta

Interesante pregunta. Acabo de probar lo que dices, y efectivamente sucede así, pero aún más: cualquier variable usada como indice en un “for-loop”, aún sin estar declarada a través de un “let”, ni dentro del “for” ni afuera de él, funciona inclusive como una variable que se puede usar afuera del “for”. Corre éste código y lo verás:

const number = parseInt(prompt("Dame un número"))
let array = []
for ( indice=1; indice <= number; indice++) {
    array.push(indice)
}
console.log("indice= " + indice)
indice++
console.log("indice++= " + indice)
array.splice(1,1)
console.log(array)
1 me gusta

Acabo de ensayar usando “let” para definir “indice” dentro del “for” en el código que acabé de compartir, y ahí sí restringió el alcance de “indice” al “for”. Córrelo como te muestro a continuación y verás:

const number = parseInt(prompt("Dame un número"))
let array = []
for (let indice=1; indice <= number; indice++) {
    array.push(indice)
}
console.log("indice= " + indice)
indice++
console.log("indice++= " + indice)
array.splice(1,1)
console.log(array)

Al correrlo, sale el error “indice is not defined

Creo que esta es la respuesta a lo que dices.

En este enlace esta esta documentación

3 Me gusta

Muchas gracias @carosalazar28

1 me gusta

Como bien menciona @carosalazar28 En la documentación MDN de javascript gramatica y tipos (sección “declaración de variables”). Mencionan que en javascript no es necesario declarar las variables, a esto lo llaman variable global no declarada y podras ver que en la documentación desaconsejan el uso de este tipo de variables.

Sin embargo por seguridad y entendiendo el scope (alcance) que utiliza javascript para las variables, preferiré seguir usando el let para restringir el alcance de esa variable solo dentro del for ya que no me parece conveniente tener esa variable global en todo el ciclo de vida del código, es mejor restringirla al bloque for

Interesante observación @Ramireeez

2 Me gusta