Sobes.tech
Junior — Middle

Ποια είναι η διαφορά μεταξύ δήλωσης μεταβλητών με τις λέξεις-κλειδιά var και let, και ποια είναι τα χαρακτηριστικά τους;

sobes.tech AI

Απάντηση από AI

Στην JavaScript (και στο Node.js), οι λέξεις-κλειδιά var και let χρησιμοποιούνται για τον ορισμό μεταβλητών, αλλά έχουν σημαντικές διαφορές:

  • Πεδίο:

    • Το var έχει πεδίο λειτουργίας (function scope). Αυτό σημαίνει ότι μια μεταβλητή που δηλώνεται με var μέσα σε μια λειτουργία είναι ορατή σε ολόκληρη τη λειτουργία.
    • Το let έχει πεδίο μπλοκ (block scope). Η μεταβλητή είναι ορατή μόνο μέσα στα πιο κοντινά {}.
  • Hoisting:

    • Οι μεταβλητές που δηλώνονται με var ανυψώνονται στην κορυφή της λειτουργίας τους και αρχικοποιούνται με undefined.
    • Οι μεταβλητές με let επίσης ανυψώνονται, αλλά δεν αρχικοποιούνται, η πρόσβαση σε αυτές πριν από την δήλωσή τους οδηγεί σε σφάλμα (Χρονική Ζώνη Θανάτου).
  • Επαναπροσδιορισμός:

    • Το var επιτρέπει τον επαναπροσδιορισμό της ίδιας μεταβλητής στον ίδιο χώρο.
    • Το let δεν επιτρέπει τον επαναπροσδιορισμό μιας μεταβλητής στον ίδιο χώρο.

Παράδειγμα:

function παράδειγμα() {
  console.log(a); // undefined
  // console.log(b); // Σφάλμα: δεν μπορεί να χρησιμοποιηθεί πριν από τη δήλωση

  var a = 1;
  let b = 2;

  if (true) {
    var a = 3; // επαναπροσδιορίζει τη μεταβλητή a στη λειτουργία
    let b = 4; // νέα μεταβλητή b στο μπλοκ if
    console.log(b); // 4
  }

  console.log(a); // 3
  console.log(b); // 2
}

παράδειγμα();

Η χρήση του let προτιμάται για καλύτερο έλεγχο του πεδίου και αποφυγή σφαλμάτων που σχετίζονται με τον επαναπροσδιορισμό και την απρόβλεπτη συμπεριφορά του var.