Qual é a diferença entre let e var em JavaScript?
Olá a todos! Comecei a estudar JavaScript e me deparei com uma situação que não entendo. Quando declaro variáveis com `var` e com `let`, o código se comporta de forma diferente, e não consigo entender por quê.
Aqui está um exemplo que me confundiu:
```javascript
function test() {
if (true) {
var x = 10;
let y = 20;
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
```
Por que `x` está acessível fora do bloco `if`, mas `y` não? Eu pensei que ambas as variáveis fossem declaradas no mesmo lugar.
Outro exemplo com loop:
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Exibe: 3 3 3
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1000);
}
// Exibe: 0 1 2
```
Por que `var` no loop se comporta de forma tão estranha? Eu esperava que ambas as opções exibissem 0, 1, 2. O que estou fazendo de errado? Qual é a diferença fundamental entre essas duas formas de declarar variáveis? Ficarei grato pela