Πρόσβαση σε εξωτερικές μεταβλητών συναρτήσεων στο JavaScript
Ας εξετάσουμε τον ακόλουθο κώδικα:
let num = 1; // ορίζουμε την τιμή της μεταβλητής
function func() {
console.log(num); // την εμφανίζουμε στην κονσόλα
}
func(); // καλούμε τη συνάρτηση
Όπως ανέφερα νωρίτερα, η τιμή της μεταβλητής δεν είναι απαραίτητο να βρίσκεται πριν από τον ορισμό της συνάρτησης, το κύριο πράγμα είναι να βρίσκεται πριν από την κλήση της:
function func() {
console.log(num);
}
let num = 1;
func();
Στην πραγματικότητα, αυτό δεν είναι απολύτως ακριβές. Η συνάρτησή μας
ακόμη και πριν από την κλήση της γνωρίζει την τιμή της μεταβλητής
num:
let num = 1;
function func() {
console.log(num); // η συνάρτηση γνωρίζει ήδη ότι num = 1
}
Ακολουθεί ένα πιο σύνθετο παράδειγμα:
let num = 1; // η συνάρτηση σε αυτή τη στιγμή μαθαίνει ότι num = 1
function func() {
console.log(num);
}
num = 2; // η συνάρτηση σε αυτή τη στιγμή μαθαίνει ότι num = 2
Ας προσθέσουμε κλήσεις της συνάρτησης:
let num = 1; // η συνάρτηση σε αυτή τη στιγμή μαθαίνει ότι num = 1
func(); // θα εμφανίσει 1
function func() {
console.log(num);
}
func(); // θα εμφανίσει 1
num = 2; // η συνάρτηση σε αυτή τη στιγμή μαθαίνει ότι num = 2
func(); // θα εμφανίσει 2
Για άλλη μια φορά: στην πραγματικότητα η συνάρτηση γνωρίζει τις τιμές των εξωτερικών μεταβλητών, ακόμη και αν δεν έχει κληθεί.