42. Ανύψωση (Hoisting) JavaScript

JS Hoisting


Η ανύψωση είναι η προεπιλεγμένη συμπεριφορά της JavaScript για τη μετακίνηση των δηλώσεων προς τα πάνω.


Οι δηλώσεις JavaScript ανυψώνονται

Στη JavaScript, μια μεταβλητή μπορεί να δηλωθεί μετά τη χρήση της.

Με άλλα λόγια; μια μεταβλητή μπορεί να χρησιμοποιηθεί πριν δηλωθεί.

Το παράδειγμα 1 δίνει το ίδιο αποτέλεσμα με το Παράδειγμα 2 :

Παράδειγμα 1

x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

var x; // Declare x

Δοκιμάστε τον εαυτό σας »

Παράδειγμα 2

var x; // Declare x
x = 5; // Assign 5 to x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x;                     // Display x in the element

Δοκιμάστε τον εαυτό σας »

Για να καταλάβετε αυτό, πρέπει να καταλάβετε τον όρο “ανύψωση”.

Η ανύψωση είναι η προεπιλεγμένη συμπεριφορά της JavaScript για τη μετακίνηση όλων των δηλώσεων στην κορυφή του τρέχοντος πεδίου εφαρμογής (στην κορυφή της τρέχουσας δέσμης ενεργειών ή στην τρέχουσα συνάρτηση).


Οι λέξεις κλειδιά let and const

Οι μεταβλητές και οι σταθερές που δηλώνονται με letή const δεν ανυψώνονται!

Διαβάστε περισσότερα για τα let και const στο JS Let / Const .


Οι αρχικοποιήσεις JavaScript δεν ανυψώνονται

Η JavaScript ανυψώνει μόνο δηλώσεις, όχι αρχικοποιήσεις.

Το Παράδειγμα 1 δεν δίνει το ίδιο αποτέλεσμα με το Παράδειγμα 2 :

Παράδειγμα 1

var x = 5; // Initialize x
var y = 7; // Initialize y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

Δοκιμάστε τον εαυτό σας »

Παράδειγμα 2

var x = 5; // Initialize x

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

var y = 7; // Initialize y

Δοκιμάστε τον εαυτό σας »

Έχει νόημα ότι το y είναι undefined  στο τελευταίο παράδειγμα;

Αυτό οφείλεται στο γεγονός ότι μόνο η δήλωση (var y), όχι η αρχικοποίηση (= 7), ανυψώνεται στην κορυφή.

Λόγω της ανύψωσης, το y έχει δηλωθεί πριν χρησιμοποιηθεί, αλλά επειδή οι αρχικοποιήσεις δεν ανυψώνονται, η τιμή του y είναι απροσδιόριστη.

Το παράδειγμα 2 είναι το ίδιο με το παρακάτω:

Παράδειγμα

var x = 5; // Initialize x
var y;     // Declare y

elem = document.getElementById("demo"); // Find an element
elem.innerHTML = x + " " + y;           // Display x and y

y = 7;    // Assign 7 to y

Δοκιμάστε τον εαυτό σας »


Δηλώστε τις μεταβλητές σας στην κορυφή!

Η ανύψωση είναι (για πολλούς προγραμματιστές) μια άγνωστη ή παραβλεφθείσα συμπεριφορά της JavaScript.

Εάν ένας προγραμματιστής δεν κατανοεί την ανύψωση, τα προγράμματα του μπορεί να περιέχουν σφάλματα.

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

Επειδή αυτός είναι ο τρόπος με τον οποίο η JavaScript ερμηνεύει τον κώδικα, είναι πάντα ένας καλός κανόνας.

Η JavaScript σε αυστηρή λειτουργία δεν επιτρέπει τη χρήση μεταβλητών εάν δεν δηλωθούν.
Μελετήστε το “use stri” στο επόμενο κεφάλαιο.


Days
Hours
Minutes

42. Ανύψωση (Hoisting) JavaScript

Κοινοποίηση

Share on facebook
Share on twitter

Ακολουθήστε μας

Αρέσει σε %d bloggers: