Ne eroavat kolmella tavalla: scope, hoisting behavior ja reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Ne eroavat kolmella tavalla: scope, hoisting behavior ja reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var on function-scoped, hoisted ja alustettu undefined:ksi, ja se voidaan redeclaroida. Tämä aiheuttaa yllättäviä vuotoja — vältä sitä.let on block-scoped ({ }), reassignable ja elää temporal dead zone -tilassa kunnes sen esittelyrivillä (siihen pääsy aikaisin heittää virheen).const on block-scoped ja sitä ei voi reassignata — mutta huomaa, että sitominen on vakio, ei arvo:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Käytä oletuksena const:ia; vaihda let:iin vain kun sinun on reassignattava; älä koskaan käytä var:ia uudessa koodissa. Tämä tekee tarkoituksesta selkeä ("tämä ei muutu") ja välttää scope-vuodot ja hoistingu sekaannuksen, jonka var aiheuttaa.