Was ist der Unterschied zwischen let und var in JavaScript?
Hallo zusammen! Ich habe gerade angefangen, JavaScript zu lernen, und bin auf eine für mich unverständliche Situation gestoßen. Wenn ich Variablen mit `var` und mit `let` deklariere, verhält sich der Code unterschiedlich, und ich kann nicht verstehen, warum.
Hier ist ein Beispiel, das mich verwirrt hat:
```javascript
function test() {
if (true) {
var x = 10;
let y = 20;
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
```
Warum ist `x` außerhalb des `if`-Blocks zugänglich, `y` aber nicht? Ich dachte, beide Variablen wären an derselben Stelle deklariert.
Ein weiteres Beispiel mit einer Schleife:
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Gibt aus: 3 3 3
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1000);
}
// Gibt aus: 0 1 2
```
Warum