Avatar ·

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