`var`, `let` und `const` sind Schlüsselwörter in JavaScript, die zum Deklarieren von Variablen verwendet werden. Es gibt jedoch wesentliche Unterschiede zwischen ihnen:
1. `var`: Dies ist der älteste Weg, um Variablen in JavaScript zu deklarieren. Eine durch var deklarierte Variable hat eine Funktionsreichweite, wenn sie innerhalb einer Funktion deklariert wird, und eine globale Reichweite, wenn sie außerhalb einer Funktion deklariert wird. Das bedeutet, dass sie überall in der Funktion oder im globalen Code verfügbar ist, unabhängig davon, wo sie deklariert wurde.
2. `let`: Dieses Schlüsselwort wurde mit ES6 (der Version von JavaScript, die 2015 veröffentlicht wurde) eingeführt. `let` hat eine blockbezogene Reichweite. Das bedeutet, dass eine mit `let` deklarierte Variable nur innerhalb des Blocks, der Anweisung oder der Ausdrucks verfügbar ist, in dem sie deklariert wurde.
3. `const`: Auch `const` wurde mit ES6 eingeführt und hat ebenfalls eine blockbezogene Reichweite wie `let`. Der Hauptunterschied besteht darin, dass eine `const`-Variable nach der Initialisierung nicht mehr neu zugewiesen werden kann. Das macht `const` ideal für Werte, die sich nie ändern sollten, wie z.B. Konfigurationsdaten oder Konstanten im mathematischen Sinn. Es ist jedoch wichtig zu beachten, dass `const`-Objekte oder Arrays veränderbar sind, d.h., Sie können Eigenschaften hinzufügen oder ändern, aber den Variablen selbst nicht einen neuen Wert zuweisen.
Hier ein Beispiel:
```javascript
var x = 1; // x ist global
if(true) {
var x = 2; // x ist immer noch global
console.log(x); //Ausgabe 2
}
console.log(x); //Ausgabe 2 – x ist global und wurde überschrieben
let y = 1;
if(true) {
let y = 2; //hier ist y eine neue Variable, die nur in diesem Block existiert
console.log(y); //Ausgabe 2
}
console.log(y); //Ausgabe 1 – y wurde nicht überschrieben
const z = 1;
z = 2; //Fehler: Zuweisung an Konstanten-Variablen
```