Jie skiriasi trimis būdais: scope, hoisting behavior ir reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Jie skiriasi trimis būdais: scope, hoisting behavior ir reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var yra function-scoped, hoisted ir inicijuotas į undefined, ir gali būti iš naujo deklaruotas. Tai sukelia nenumatytus nutekėjimus — to vengkite.let yra block-scoped ({ }), iš naujo priskirti galima, ir yra temporal dead zone iki jo deklaracijos eilutės (ankstyvas prieigos mėginimas iškelia klaidą).const yra block-scoped ir negali būti iš naujo priskirtas — bet atminkite, kad binding yra pastovus, ne pati reikšmė:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Pagal nutylėjimą naudokite const; perjunkite į let tik jei turite iš naujo priskirti; niekada nenaudokite var naujame kode. Tai paaiškina ketinimą ("tai nesikeisis") ir išvengia scope nutekėjimų ir hoisting painiavos, kurią sukelia var.