Liší se třemi způsoby: scope, hoisting behavior a reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Liší se třemi způsoby: scope, hoisting behavior a reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var je function-scoped, hoisted a inicializován na undefined, a lze jej redeclarovat. To způsobuje překvapivé úniky — vyhněte se tomu.let je block-scoped ({ }), reassignable a existuje v temporal dead zone až do svého řádku deklarace (přístup k němu brzy vyvolá chybu).const je block-scoped a nelze jej reassignovat — ale nezapomeňte, že vazba je konstantní, nikoli hodnota:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Ve výchozím nastavení používejte const; přejděte na let pouze když musíte reassignovat; nikdy nepoužívejte var v novém kódu. To objasňuje záměr ("to se nezmění") a vyhýbá se únikům scope a zmatkům s hoistingem, které var přináší.