Sie unterscheiden sich auf drei Arten: scope, hoisting behavior und reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var ist function-scoped, wird hoisted und zu undefined initialisiert, und kann erneut deklariert werden. Dies führt zu überraschenden Lecks — vermeiden Sie es.let ist block-scoped ({ }), reassignierbar und existiert in der temporal dead zone bis zur Deklarationszeile (der Zugriff darauf wirft einen Fehler).const ist block-scoped und kann nicht reassigniert werden — beachten Sie jedoch, dass die Bindung konstant ist, nicht der Wert:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Verwenden Sie standardmäßig const; wechseln Sie zu let nur, wenn Sie reassignieren müssen; verwenden Sie var niemals in neuem Code. Dies macht die Absicht deutlich ("dies wird sich nicht ändern") und vermeidet die Scope-Lecks und Hoisting-Verwirrung, die var mit sich bringt.