Üç açıdan farklıdırlar: scope, hoisting behavior ve reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Üç açıdan farklıdırlar: scope, hoisting behavior ve reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var function-scoped'dur, hoisted'dır ve undefined'e initialize edilir ve yeniden declare edilebilir. Bu şaşırtıcı sızıntılar (leak) nedeniyle kullanılmamalıdır.let block-scoped'dur ({ }), reassign edilebilir ve declaration satırına kadar temporal dead zone'da bulunur (bundan önce erişmek hata fırlatır).const block-scoped'dur ve reassign edilemez — ancak binding'in constant olduğunu, değerin değil dikkat edin:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Varsayılan olarak const kullanın; yalnızca reassign etmeniz gerektiğinde let'e geçin; yeni kodda hiçbir zaman var kullanmayın. Bu, niyeti açık hale getirir ("bu değişmeyecek") ve var'ın getirdiği scope sızıntıları ve hoisting karmaşasından kaçınır.