Λεξικό Περιβάλλον Συναρτήσεων στην JavaScript

Όλες οι εξωτερικές, προσβάσιμες από τη συνάρτηση μεταβλητές, ονομάζονται το λεξικό της περιβάλλον (LexicalEnvironment).

Στο ακόλουθο παράδειγμα, η συνάρτηση έχει πρόσβαση σε δύο μεταβλητές: num1 και num2, οι οποίες αποτελούν το λεξικό περιβάλλον της συνάρτησής μας:

javascriptlet num1 = 1;
let num2 = 2;

function func() {
  // η συνάρτηση γνωρίζει για τις μεταβλητές num1 και num2
}

Το ίδιο το λεξικό περιβάλλον αντιπροσωπεύει ένα εσωτερικό αντικείμενο JavaScript, δεμένο στη συνάρτησή μας. Σε αυτήν την περίπτωση, μπορεί να αναπαρασταθεί με την ακόλουθη μορφή:

javascript{num1: 1, num2: 2}

Η τιμή οποιασδήποτε μεταβλητής του λεξικού περιβάλλοντος είναι πάντα ίση με την τρέχουσα τιμή αυτής της μεταβλητής:

javascriptlet num1 = 1; // περιβάλλον {num1: 1}
let num2 = 2; // περιβάλλον {num1: 1, num2: 2}

// Ας αλλάξουμε τη μεταβλητή num1:
num1 = 123; // περιβάλλον {num1: 123, num2: 2}

function func() {
  
}

Όταν προσπαθούμε να προσπελάσουμε οποιαδήποτε μεταβλητή μέσα σε μια συνάρτηση, αυτή η μεταβλητή αναζητείται πρώτα μεταξύ των τοπικών μεταβλητών της συνάρτησης και, εάν δεν υπάρχει τέτοια μεταβλητή εκεί, τότε αναζητείται στο λεξικό περιβάλλον της συνάρτησης.