Quelle est la différence entre let et var en JavaScript ?
Bonjour à tous ! Je viens de commencer à apprendre JavaScript et je suis confronté à une situation que je ne comprends pas. Quand je déclare des variables avec `var` et avec `let`, le code se comporte différemment, et je ne peux pas comprendre pourquoi.
Voici un exemple qui m'a dérouté :
```javascript
function test() {
if (true) {
var x = 10;
let y = 20;
}
console.log(x); // 10
console.log(y); // ReferenceError: y is not defined
}
```
Pourquoi `x` est-il accessible en dehors du bloc `if`, alors que `y` ne l'est pas ? Je pensais que les deux variables étaient déclarées au même endroit.
Un autre exemple avec une boucle :
```javascript
for (var i = 0; i < 3; i++) {
setTimeout(() => console.log(i), 1000);
}
// Affiche : 3 3 3
for (let j = 0; j < 3; j++) {
setTimeout(() => console.log(j), 1000);
}
// Affiche : 0 1 2
```
Pourquoi `var` dans la boucle se comporte-t-il si étrangement ? Je m'attendais à ce que les deux versions affichent 0, 1, 2. Qu'est-ce que je fais de travers ? Quelle est la différence fondamentale entre ces deux façons de déclarer des variables ? Je serais reconnaissant pour