Wanatofautiana kwa njia tatu: scope, hoisting behavior na reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Wanatofautiana kwa njia tatu: scope, hoisting behavior na reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var ni function-scoped, hoisted na initialized kwa undefined, na inaweza kutengenezwa tena. Hii husababisha mabovu yanayojulika — kuzuia.let ni block-scoped ({ }), inaweza kuwekwa upya, na iko katika temporal dead zone hadi mstari wake wa mgao (kuipata mapema kutaeneza).const ni block-scoped na haiwezi kuwekwa upya — lakini kumbuka kwamba binding ni constant, si thamani:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Kubadilisha kwa default kwa const; badili kwa let tu wakati lazima kuweka tena; kamwe usitumie var katika kanuni mpya. Hii inaifanya nia kuwa wazi ("hii haitabadilika") na kuepuka mabovu ya scope na hoisting confusion ambayo var inaleta.