Διαφέρουν σε τρεις τρόπους: scope, hoisting behavior και reassignment.
js
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
Διαφέρουν σε τρεις τρόπους: scope, hoisting behavior και reassignment.
() {
() {
a = ;
b = ;
c = ;
}
.(a);
.(b);
}
var είναι function-scoped, hoisted και αρχικοποιημένο σε undefined, και μπορεί να επανακηρυχθεί. Αυτό προκαλεί εκπληκτικές διαρροές — αποφύγετέ το.let είναι block-scoped ({ }), reassignable και ζει στην temporal dead zone μέχρι την γραμμή δήλωσής του (η πρόσβαση σε αυτό νωρίς ρίχνει σφάλμα).const είναι block-scoped και δεν μπορεί να reassignαρθεί — αλλά σημειώστε ότι η δέσμευση είναι σταθερή, όχι η τιμή:const user = { name: "Ann" };
user.name = "Bob"; // ✅ allowed — mutating the object, not reassigning
user = {}; // ❌ TypeError — can't rebind `user`
Να χρησιμοποιείτε προεπιλεγμένα const· μεταβείτε σε let μόνο όταν πρέπει να reassignάρετε· μην χρησιμοποιείτε ποτέ var σε νέο κώδικα. Αυτό κάνει τη σκοπό σαφή ("αυτό δεν θα αλλάξει") και αποφεύγει τις διαρροές εύρους και τη σύγχυση hoisting που φέρνει το var.