De skiller seg på tre måter: omfang (scope), hoisting-oppførsel, og omtildeling.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
De skiller seg på tre måter: omfang (scope), hoisting-oppførsel, og omtildeling.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var er funksjonsscopet, hoistet og initialisert til undefined, og kan redeklares. Dette forårsaker overraskende lekkasjer — unngå det.let er blokkscopet ({ }), kan omtildeles, og befinner seg i temporal dead zone inntil dets deklarasjonslinje (tilgang tidligere kaster feil).const er blokkscopet og kan ikke omtildeles — men merk at bindingen er konstant, ikke verdien:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Bruk const som standard; bytt til let bare når du må omtildele; bruk aldri var i ny kode. Dette gjør hensikten klar («dette endres ikke») og unngår omfanglekkasjer og hoisting-forvirring som var medfører.