¿Cuál es la diferencia entre let y var en JavaScript?
¡Hola a todos! Acabo de empezar a estudiar JavaScript y me encontré con una situación que no entiendo. Cuando declaro variables con `var` y con `let`, el código se comporta de manera diferente y no puedo entender por qué.
Aquí hay un ejemplo que me confundió:
```javascript
function test() {
if (true) {
var x = 10;
let y = 20;
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
```
¿Por qué `x` es accesible fuera del bloque `if`, pero `y` no? Pensé que ambas variables estaban declaradas en el mismo lugar.
Otro ejemplo con un loop:
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Imprime: 3 3 3
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1000);
}
// Imprime: 0 1 2
```
¿Por qué `var` en el loop se comporta de manera tan extraña? Esperaba que ambas opciones imprimieran 0, 1, 2. ¿Qué estoy haciendo mal? ¿Cuál es la diferencia fundamental entre estas dos formas de declarar variables? Agradecería